附件上传-02

本demo基于bootstrap-prettyfile.js

html代码如下:

1  <div id="file-pretty">
2                     <form id="ui-form-file-upload" name="form-file-upload" method="post" target="ui-iframe-file-upload" action="/Env/SoilSampleCheck/FileSubmit" enctype="multipart/form-data">
3                         <input type="file" name="fileName" class="form-control" style="display:none;">
4                         <input type="hidden" name="projectId" id="hidProjectId" />
5                     </form>
6                     <iframe name="ui-iframe-file-upload" id="ui-iframe-file-upload" style="position:absolute; top:-9999px; left:-9999px;"></iframe>
7                 </div>

JavaScript代码如下:

 1 //文件上传
 2                 $('#file-pretty input[type="file"]').prettyFile().change(function () {
 3 
 4                     var projectId = $("#hidProjectId").val();
 5                     if (projectId == "") {
 6                         tincher.message("请先选择项目", "error");
 7                     } else {
 8 
 9                         var param = { projectId: projectId };
10                         param = $.forgeryToken(param);
11                         tincher.execute("/Env/SoilSampleCheck/CheckSoilItem1", param, function (result, response) {
12                             if (result) {
13                                 $("#ui-form-file-upload").submit();
14                             } else {
15                                 tincher.message(response.message, "error");
16                             }
17                         });
18                     }
19                 });
20 
21   $("#ui-iframe-file-upload").on('load', function () {
22                     var response = "";
23                     if (this.contentWindow) {
24                         response = this.contentWindow.document.body ? this.contentWindow.document.body.innerText : null;
25 
26                     } else if (this.contentDocument) {
27                         response = this.contentDocument.document.body ? this.contentDocument.document.body.innerText : null;
28                     }
29                     if (response != "") {
30                         //有返回值
31                         var result = JSON.parse(response) || {};
32                         tincher.message(result.message);
33                         if (result.state == "success") {
34                             $("#hidFilePath").val(result.context.url);
35                             excelShow();
36                         }
37                     }
38                 })

C#代码如下:

 1  /// <summary>
 2         /// 单个文件上传
 3         /// </summary>
 4         /// <returns></returns>
 5         [HttpPost]
 6         public ActionResult FileSubmit(FormCollection form)
 7         {
 8             //文件
 9             var postFiles = Request.Files;
10             //没有文件
11             if (postFiles == null && postFiles.Count == 0)
12             {
13                 return Error("请选择要上传的附件");
14             }
15             try
16             {
17                 var postFile = postFiles[0];
18                 Thread.Sleep(200);////延迟200毫秒
19                 //文件保存目录路径
20                 string savePath = "/Content/attached/";
21                 //模块名
22                 var module = "SoilSampleCheckModule";
23                 var projectId = form["projectId"];
24                 //真实路径
25                 var realPath = Server.MapPath(savePath);
26                 //创建文件夹-模块文件夹
27                 realPath += module + "\";
28                 savePath += module + "/";
29                 if (!Directory.Exists(realPath))
30                 {
31                     Directory.CreateDirectory(realPath);
32                 }
33                 //创建文件夹-日期文件夹
34                 string ymd = DateTime.Now.ToString("yyyyMMdd", DateTimeFormatInfo.InvariantInfo);
35                 realPath += ymd + "\";
36                 savePath += ymd + "/";
37                 if (!Directory.Exists(realPath))
38                 {
39                     Directory.CreateDirectory(realPath);
40                 }
41                 //扩展名
42                 string fileExt = Path.GetExtension(postFile.FileName);
43                 //文件名
44                 var fullFileName = DateTime.Now.ToString("yyyyMMddHHmmss_ffff", DateTimeFormatInfo.InvariantInfo) + fileExt;
45                 //保存文件
46                 postFile.SaveAs(realPath + fullFileName);
47                 //返回保存的url
48                 savePath += fullFileName;
49                 return Success("上传成功!", new { name = postFile.FileName, url = savePath });
50             }
51             catch (Exception ex)
52             {
53                 return Error(ex.Message);
54             }
55         }
原文地址:https://www.cnblogs.com/gotoschool/p/14147759.html