zoukankan      html  css  js  c++  java
  • WebAPI的文件上传与下载

     上传:

    <input type="file" id="file" />
    <input type="button" id="upload" value="上传文件" />
    
    <script>
        //上传
        $("#upload").click(function () {
            var formData = new FormData();
            var file = document.getElementById("file").files[0];
            formData.append("fileInfo", file);
            $.ajax({
                url: "../api/File/UploadFile",
                type: "POST",
                data: formData,
                contentType: false,//必须false才会自动加上正确的Content-Type
                processData: false,//必须false才会避开jQuery对 formdata 的默认处理,XMLHttpRequest会对 formdata 进行正确的处理
                success: function (data) {
                    alert(data);
                },
                error: function (data) {
                    alert("上传失败!");
                }
            });
        });
    </script>
    
    /// <summary>
            /// 上传文件
            /// </summary>
            [HttpPost]
            public string UploadFile()
            {
                string result = string.Empty;
                try
                {
                    string uploadPath = HttpContext.Current.Server.MapPath("~/App_Data/");
                    HttpRequest request = System.Web.HttpContext.Current.Request;
                    HttpFileCollection fileCollection = request.Files;
                    // 判断是否有文件
                    if (fileCollection.Count > 0)
                    {
                        // 获取文件
                        HttpPostedFile httpPostedFile = fileCollection[0];
                        string fileExtension = Path.GetExtension(httpPostedFile.FileName);// 文件扩展名
                        string fileName = Guid.NewGuid().ToString() + fileExtension;// 名称
                        string filePath = uploadPath + httpPostedFile.FileName;// 上传路径
                        // 如果目录不存在则要先创建
                        if (!Directory.Exists(uploadPath))
                        {
                            Directory.CreateDirectory(uploadPath);
                        }
                        // 保存新的文件
                        while (File.Exists(filePath))
                        {
                            fileName = Guid.NewGuid().ToString() + fileExtension;
                            filePath = uploadPath + fileName;
                        }
                        httpPostedFile.SaveAs(filePath);
                        result = "上传成功";
                    }
                }
                catch (Exception)
                {
                    result = "上传失败";
                }
                return result;
            }
    

     下载:

    <form action="../api/File/DownloadFile" method="get" id="form">
       下载文件 <input type="text" id="name" name="fileName" value="222" />
    </form>
    <input type="button" id="download" value="下载文件" />
    
    <script>
        //下载
        $("#download").click(function () {
            var form = $("#form");
            form.submit();
        });
    </script>
    
    /// <summary>
            /// 下载文件
            /// </summary>
            [HttpGet]
            public void DownloadFile()
            {
                var request = HttpContext.Current.Request;
                NameValueCollection nvCollection = request.Params;
                string fileName = nvCollection.GetValues("fileName")[0];
                string filePath = Path.Combine(HttpContext.Current.Server.MapPath("~/App_Data/"), fileName);
                if (File.Exists(filePath))
                {
                    HttpResponse response = HttpContext.Current.Response;
                    response.Clear();
                    response.ClearHeaders();
                    response.ClearContent();
                    response.Buffer = true;
                    response.AddHeader("content-disposition", string.Format("attachment; FileName={0}", fileName));
                    response.Charset = "GB2312";
                    response.ContentEncoding = Encoding.GetEncoding("GB2312");
                    response.ContentType = MimeMapping.GetMimeMapping(fileName);
                    response.WriteFile(filePath);
                    response.Flush();
                    response.Close();
                }
            }
    
  • 相关阅读:
    【转】Maven实战(九)---模块聚合和继承
    【转】Maven实战(八)---模块划分
    Oracle ORA-01034,ORA-27101,ORA-00600
    【spring源代码分析】--Bean的解析与注冊
    ArcGIS For Flex报错
    江西省委常委赵智勇被免 无被查字眼 媒体推測窝案
    软考——(4)数据库
    matlab 2014a 改为英文版本号
    POJ 2299 Ultra-QuickSort (求序列的逆序对数)
    工厂方法模式(factory method pattern)
  • 原文地址:https://www.cnblogs.com/TheBob/p/10190380.html
Copyright © 2011-2022 走看看