• asp.net多文件的上传、预览、下载


    本文章主要用于记录,方便以后的翻找使用!!!!

    html:

     1      <tr>
     2             <th class='formTitle'>选择文件:
     3                 <input type="file" id="file_input" name="file_input" style="left: -9999px; position: absolute;" multiple="multiple" />
     4             </th>
     5             <td class="formValue" colspan="4" >
     6                 <div style="text-align: center;  100%" id="uploadFile">
     7                     <input type="button" onclick="addfileclick();" id="uploadPic" value="上  传" style=" 80%" /></div>
     8             </td>
     9         </tr> 
    10         //以下是加载当前数据已经存在的文件的记录,包括预览,下载,删除;XXXXX 后台查询的类
    11         @if (ViewData["files"] != null)
    12         {
    13             int i = 1;
    14             foreach (var file in ViewData["files"] as IEnumerable<XXXXXX>)
    15             {
    16             <tr id="oldFile_@file.Id">
    17                 <th class="formTitle">已传文件:</th>
    18                 <td class="formValue" colspan="2">
    19                     <label id="fileName">@file.FileName</label>
    20                 </td>
    21                 <td class="formValue" colspan="2">
    22                     <div style="text-align: center;">
    23                         @*<a href="../@file.FilePath" id="preFile" target="_blank">预览</a>&nbsp;&nbsp;&nbsp;*@
    24                         <a href="javascript:;" id="preFile" title="/@file.FilePath" name="@file.FileName" onclick="preFile(this.title,this.name,'@file.Ext')">预览</a>&nbsp;&nbsp;&nbsp;
    25                                 <a href="javascript:;" id="downFile" title="../@file.FilePath" name="@file.FileName" onclick="downFile(this.title,this.name)">下载</a>&nbsp;&nbsp;&nbsp;
    26                                 <a href="javascript:;" id="@file.Id" onclick="deleteFile(this.id)">删除</a>&nbsp;&nbsp;&nbsp;
    27                     </div>
    28                 </td>
    29             </tr>
    30                          i++;
    31                      }
    32                  }

    页面加载时,为input添加change事件:

    $(function () {
            var input = document.getElementById("file_input");
            if (typeof FileReader === 'undefined') {
                alert("抱歉,你的浏览器不支持 FileReader");
                input.setAttribute('disabled', 'disabled');
            } else {
                input.addEventListener('change', uploadFile, false);
            }
        });

    后台需要获取文件,进行页面文件的初始加载:

    public ActionResult Form(string KeyValue)
            {
                if (!string.IsNullOrEmpty(KeyValue))//编辑
                {
                    var files = GetFiles(KeyValue);
                    if (files.Count > 0)
                    {
                        ViewData["files"] = files;
                    }
                }
    
                return View();
            }
            public List<XXXXXX> GetFiles(string Id)
            {
                return OperateContext.Current.BllContext.IXXXXXXBll.GetList(c => c.Id== Id && c.XX== "XX").ToList();
            }

    然后就是页面上的js来处理了:

     1 //点击上传按钮进行文件的选择
     2 function addfileclick() {
     3         document.getElementById("file_input").click();
     4     }
     5     var num = 0;//最终上传的文件的数量
     6     var index = 0;//选择的文件的"索引"
     7     var deleteIndex = "";//js中也就是前端进行并未上传到后台的文件的删除
     8    
     9     function uploadFile() {
    10         num = 0;
    11         index = 0;
    12         deleteIndex = "";
    13         $(".newFileClass").remove();
    14         var iLen = this.files.length;//选择的文件的数量
    15         for (var i = 0; i < iLen; i++) {//循环选择文件进行展示,并添加删除按钮,可以进行删除
    16             var html = "<tr id='newFile_" + index + "' class='newFileClass'><th class='formTitle'>文件名:</th><td class='formValue' colspan='2'><label id='fileName'>" + this.files[i].name + "</label></td><td class='formValue'  colspan='2'><div style='text-align:center;'><a href='javascript:;' id='deleteFile' onclick = 'deleteFile(" + index + ");'>删除</a></div></td></tr>";
    17             $("#FileTable").append(html);
    18             index++;
    19             num++;
    20         }
    21 
    22     }
    23     //删除文件--后台删除文件,已经在后台保存过的文件的删除
    24     function deleteFile(index) {
    25         if (!!GetQuery('KeyValue') && !checkRate(index)) {//编辑
    26             if (!confirm("注:您确定要删除上传记录?"))
    27             { return false; }
    28             var fileId = index;
    29             AjaxJson(getControlStr() + "/User_DiseaseDiagnose/DeleteFile", { KeyValue: GetQuery('KeyValue'), fileId: fileId }, function (Data) {
    30                 layer.msg(Data.Message, {
    31                     icon: Data.State,
    32                     time: 1500
    33                 }, function () {
    34                     if (Data.State == 1) {
    35                         //window.location.reload();
    36                     }
    37                     else {
    38                         $("#oldFile_" + index).remove();
    39                     }
    40                     layer.closeAll();
    41                 });
    42             });
    43         }
    44         else {//新增
    45             num--;
    46             //fd.delete(index);
    47             $("#newFile_" + index).remove();
    48             deleteIndex += (index + ",");
    49         }
    50     }
    51 //正则表达式 验证数据
    52     function checkRate(value) {
    53         var re = /^[0-9]+[0-9]*]*$/; //判断正整数 /^[1-9]+[0-9]*]*$/         
    54         if (!re.test(value)) {
    55             return false;
    56         } else {
    57             return true;
    58         }
    59     }
    60     //预览文件,其中FleView为一个页面,用来显示文件内容,FilePath为文件的保存路径;ext用来区分不同文件类型,按照不同方式显示
    61     function preFile(path, name, ext) {
    62         parentDialogWithClose(getControlStr() + "/ControllerName/FileView?FilePath=" + escape(path) + "&ext=" + ext, '', name, "100%", "100%");
    63     }
    64     //下载文件,通过创建a标签实现点击下载
    65     function downFile(path, name) {
    66         var alink = document.createElement("a");
    67         alink.href = path;
    68         alink.download = name;
    69         alink.click();
    70     }
    71 //layer.open打开弹窗,在弹窗中显示文件。其中parent.parent.可以根绝实际情况修改
    72     function parentDialogWithClose(url, _id, _title, _width, _height) {
    73         if (_width != "100%") {
    74             _width = _width + "px";
    75             _height = _height + "px";
    76         }
    77         parent.parent.layer.open({
    78             type: 2,
    79             title: _title,
    80             shadeClose: true,
    81             shade: 0.01,
    82             scrollbar: false,
    83             maxmin: true, //开启最大化最小化按钮
    84             area: [_width, _height],
    85             content: url
    86         });
    87     }

    其中的FileView页面内容:本页面主要用来区分word文档与其他文件的展示。

    @{
        ViewBag.Title = "FileView";
        Layout = "~/Views/Shared/_Layout.cshtml";
    }
    
    <script type="text/javascript">
        $(function () {
            var FilePath = (GetQuery('FilePath'));
            var ext = GetQuery("ext");
            if (!!ext) {
                debugger;
                if (ext == '.doc' || ext == '.docx') {
                    $("#myIframe").attr("src", "https://view.officeapps.live.com/op/view.aspx?src=" + window.location.host + getControlStr() + FilePath);
                }
                else if (ext == '.jpg' || ext == '.jpeg' || ext == '.png' || ext == '.bmp' || ext == '.gif') {
                    var html = "<img src='" + getControlStr() + FilePath + "' style='margin:0 auto;min-400px;display:block;'>";
                    $("#myIframe").contents().find("body").append(html)
                }
                else {
                    $("#myIframe").attr("src", getControlStr() + FilePath);
                }
            }
    
            
            
        });
    </script>
    
    <body style="height:100%;">
        <iframe id="myIframe" src='' frameborder='1' style="text-align:center; 100%; height:100%;"></iframe>
    </body>

    记录下来,方便以后使用时查找。

  • 相关阅读:
    attr方法笔记(反射)
    微信小程序的view标签中text如何居中?
    如何在button里面插入图片?
    html如何实现空格?
    margin-left有效果但是margin-top没有用没有效果?如何解决?
    html里button实现跳转事件
    js 字符串切割
    html获取输入框的值
    Uncaught TypeError: Cannot read property ‘split’ of undefined
    日历实现
  • 原文地址:https://www.cnblogs.com/syp1Blog/p/10918106.html
Copyright © 2020-2023  润新知