• 附件上传-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         }
  • 相关阅读:
    几款JS地图插件比较
    Objective-C ,ios,iphone开发基础:多个视图(view)之间的切换2,使用导航栏控制,以及视图之间传值。
    学习嵌入式—导火线
    Linux MySQL 5.1源码安装
    QT 一些非常常用的操作
    QT 下把编辑框内的中文字符转换为 char*
    delphi datasnap 心跳包
    ddd
    Qt 如何处理密集型耗时的事情(频繁调用QApplication::processEvents)
    Python基础-输入输出(IO)
  • 原文地址:https://www.cnblogs.com/gotoschool/p/14147759.html
Copyright © 2020-2023  润新知