.NET中的FileUpload控件的使用Jquery(一)

FileUpload在HTML中是个常用的基础控件,在涉及到上传各种格式的文件时候都会用到;笔者前段时间正好用到它做上传功能,记录下来做一些累积,

前端到后台用的是的Jquery中的Ajax进行数据传输,在后台的逻辑处理中以HttpPostedFileBase的对象调用SaveAs(ServerSavePath)方法去存储到指定路径。

Microsoft在技术文档中是这样描述HttpPostedFileBase的

Serves as the base class for classes that provide access to individual files that have been uploaded by a client.
用于提供客户端上传的单个文件访问的类的基类
 
接下来看看如何实现:
HTML
 
1  <div class="container">
2         <div class="row">
3             <input type="file" id="files" multiple name="files" /><button class="btn-default" id="UploadButton">点我上传</button>
4         </div>
5     </div>
View Code
JS
 1  $(function () {
 2             $('#UploadButton').click(function () {
 3               var data= new FormData();
 4                 var fileUpload = $("#files").get(0);
 5                 files = fileUpload.files;
 6                 if (files.length > 0) {
 7                     for (var i = 0; i < files.length; i++) {
 8                         data.append(files[i].name, files[i]); //FormData 是以键值对的形式模拟表单,然后以XMLHttpRequest请求出去。表单的enctype的属性为multipart/form-data 
 9                     }
10                     $.ajax({
11                         url: '/IENotes/CommonFile,
12                         type: "POST", 
13                         processData: false,   //  不序列化,直接将data进行传输。
14                         contentType: false,    // 告诉jquery不要设置content-Type请求头,设置成true会对FormData的边界造成干扰,接收不到数据。
15                         data: data,
16                         success: function (result) {
17                             //location.href("Index");
18                             alert(result);
19                         },
20                         error: function (err) {
21                             alert(err.statusText);
22                         }
23                     });
24                 }
25             });
26         });
View Code
 后台
 1 public static bool CommonFile(){
 2  var  files = Request.Files.AllKeys.Distinct(); //将传输过来的files进行去重
 3                 if (files != null)
 4                 {
 5                     foreach (string each in files)
 6                     {
 7                         HttpPostedFileBase file = Request.Files[each] as HttpPostedFileBase; //注意,这里有一个对象类型转换的过程,需要将传过来的对象转换成HttpPostedFileBase对象
 8                         if (file != null)
 9                         {
10                             var InputFileName = Path.GetFileName(file.FileName);
11                             string str4 = AppDomain.CurrentDomain.BaseDirectory;    //获取基目录,它由程序集冲突解决程序用来探测程序集。
12                             var ServerSavePath = Path.Combine(Server.MapPath("~/Uploads/") );
13                             if (!Directory.Exists(ServerSavePath))//检查路径是否存在
14                             {
15                                 Directory.CreateDirectory(ServerSavePath);
16                             }
17                             var SavePath = Path.Combine(ServerSavePath ,InputFileName);
18                             file.SaveAs(SavePath);
19                         }
20                     }
21                     return true;
22                 }
23                 else
24                 {
25                     return false;
26                 }
27 }
View Code
 感谢您的观看,您的是对我最大的支持!
 
原文地址:https://www.cnblogs.com/spadesQ/p/10300637.html