html加C#上传文件

最近在学上传文件部分内容,包括创建文件夹,设置文件夹属性,上传文件并保存。

前台代码:

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title></title>

</head>  <body>

<form runat="server" id="form1" method="post" enctype="multipart/form-data">

<input name="f" type="file" />

<input name="s" type="submit" />

</form>

</body>

</html>

后台代码:

System.Web.HttpFileCollection _file = System.Web.HttpContext.Current.Request.Files;

if (_file.Count > 0)

{

//文件大小

long size = _file[0].ContentLength;

//文件类型

string type = _file[0].ContentType;

//文件名

string name = _file[0].FileName;

//文件格式

string _tp = System.IO.Path.GetExtension(name);

if (_tp.ToLower() == ".jpg" || _tp.ToLower() == ".jpeg" || _tp.ToLower() == ".gif" || _tp.ToLower() == ".png" || _tp.ToLower() == ".swf")

{

//获取文件流

System.IO.Stream stream = _file[0].InputStream;

//保存文件

string saveName = DateTime.Now.ToString("yyyyMMddHHmmss") + _tp;

string path = Server.MapPath("") + "/upload/area/" + saveName;

_file[0].SaveAs(path);

}

}

后来想到,如何判断文件夹是否存在呢?如果不存在就直接保存就会出错,或者已经存在的话,会不会覆盖掉?

使用如下方法,判断是否存在,不存在则创建

if (!Directory.Exists(sPath))
  {
   Directory.CreateDirectory(sPath);

  }

//后来创建了文件夹,还是报路径错误,原因猜想:1,没有包含在项目中。2,没有权限。

解决方法:

1,手动将其包含在项目中就可以了,确实可以解决,但是非常不爽,因为程序运行在服务器上,你不可能程序创建了文件夹,然后手动去把他再加进项目中吧。

2,网上查说是创建的文件夹为只读属性了,但是我手动把程序创建的文件夹属性只读去掉,还是不成功,但是使用下面的代码将文件夹属性“只读”去掉,上传就成功了。

去除文件夹的只读属性:  System.IO.DirectoryInfo DirInfo = new DirectoryInfo(“filepath”);
                               DirInfo.Attributes = FileAttributes.Normal & FileAttributes.Directory;

去除文件的只读属性:   System.IO.File.SetAttributes("filepath", System.IO.FileAttributes.Normal);

于是结束后,将新建文件夹部分代码重新整理了一下,变成了:

string _tp = System.IO.Path.GetExtension(name);

if (_tp.ToLower() == ".jpg" || _tp.ToLower() == ".jpeg" || _tp.ToLower() == ".gif" || _tp.ToLower() == ".png" || _tp.ToLower() == ".swf")
{

string saveName = DateTime.Now.ToString("yyyyMMddHHmmss") + _tp;
string file = "/" + DateTime.Now.ToString("yyyyMMdd")+"/";
string path = Server.MapPath("~")+file;

if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
DirectoryInfo dirInfo = new DirectoryInfo(path);
dirInfo.Attributes = FileAttributes.Normal&FileAttributes.Directory;
}
_file[0].SaveAs(path+saveName);
ViewBag.imgPath = file + saveName;//可以保存至数据库或者xml等其他地方,我这里是测试,直接返回到前台了

}

时间: 2024-10-18 19:55:15

html加C#上传文件的相关文章

iOS开发——网络Swift篇&amp;NSURLSession加载数据、下载、上传文件

NSURLSession加载数据.下载.上传文件 NSURLSession类支持三种类型的任务:加载数据.下载和上传.下面通过样例分别进行介绍. 1,使用Data Task加载数据 使用全局的sharedSession()和dataTaskWithRequest方法创建. 1 func sessionLoadData(){ 2 //创建NSURL对象 3 let urlString:String="http://hangge.com" 4 var url:NSURL! = NSURL(

Thinkphp 3.0版本上传文件加图片缩略图实例解析

先看html加个表单,注意这里的action 路径要选 对. <div> <form action="__URL__/add_img" enctype="multipart/form-data" method="post" style="padding:10px;" > 图片宽度:<input type="text" name="width" /> 图

为什么上传文件的表单里面要加一个属性ENCTYPE=MULTIPART/FORM-DATA?

首先知道enctype这个属性管理的是表单的MIME编码.共有三个值可选:1.application/x-www-form-urlencoded2.multipart/form-data3.text/plain其中application/x-www-form-urlencoded是默认值,作用是设置表单传输的编码.例如我们在AJAX中见过xmlHttp.setRequestHeader("Content-Type","application/x-www-form- urlen

Swift - 使用NSURLSession加载数据、下载、上传文件

NSURLSession类支持三种类型的任务:加载数据.下载和上传.下面通过样例分别进行介绍. 1,使用Data Task加载数据 使用全局的sharedSession()和dataTaskWithRequest方法创建. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 func sessionLoadData(){     //创建NSURL对象     let urlString:String="http://hangg

? 为什么上传文件的表单里要加个属性enctype----摘录

上传文件的表单中<form>要加属性enctype="multipart/form-data",很多人只是死记硬背知道上传表单要这么写,知其然而不知其所以然.那到底为什么要添加这个属性呢?它是什么意思呢?它又有什么其他可选值呢? 其实form表单在你不写enctype属性时,也默认为其添加了enctype属性值,默认值是enctype="application/x-www-form-urlencoded".这个属性管理的是表单的MIME编码,共有三个值可

为什么上传文件的表单里要加个属性enctype

上传文件的表单中<form>要加属性enctype="multipart/form-data",很多人只是死记硬背知道上传表单要这么写,知其然而不知其所以然.那到底为什么要添加这个属性呢?它是什么意思呢?它又有什么其他可选值呢? 其实form表单在你不写enctype属性时,也默认为其添加了enctype属性值,默认值是enctype="application/x-www-form-urlencoded".这个属性管理的是表单的MIME编码,共有三个值可

angular延时函数和数据加载完才显示主要的页面、上传文件到后端、富文本框编辑框(ckeditor)

延时函数 setTimeout(()=>{ console.log("延时打印") },10000); // 延时10秒打印 //简单等数据加载完才显示主要的页面 1.先下载ngx-loading模块 npm install --save ngx-loading 2.在app.module.ts中引入NgxLoadingModule模块 import {NgxLoadingModule} from 'ngx-loading'; imports: [ BrowserModule,

vue element-ui,上传文件加载进度条显示效果(使用定时器实现源码分享)

上传文件效果如图: 父组件相关代码 html <drag-upload ref='mychild' action="//接口相关地址" v-model="versionwareList" @submitUploadParent='formSubmit' @input='delUpload' :autoUpload="autoUpload" :visible="visible" :disabled="disabl

elementUI 上传文件图片大小加了限制后 仍然上传了

https://blog.csdn.net/chanlingmai5374/article/details/80558444  看了这位老哥的说法 在看看文档 才发现自己没认真看文档 <el-upload :beforeUpload="beforeAvatarUploadPdf" </el-upload> beforeAvatarUploadPdf(file){ var testmsg=file.name.substring(file.name.lastIndexOf