Api file upload and download

//Api控制器
[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;
        }
//html页面
上传文件 <input type="file" id="file" />
<input type="button" id="upload" value="上传文件" />
<script src="../Scripts/jquery-3.3.1.js"></script>
<script>
    
    //上传
    $("#upload").click(function () {
        var formData = new FormData();
        var file = document.getElementById("file").files[0];
        formData.append("fileInfo", file);
        $.ajax({
            url: "../api/Default/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>
//下载文件
        [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();
            }
        
        }
        //下载html页面
          <form action="../api/Default/DownloadFile" method="get" id="form">
        下载文件 <input type="text" id="name" name="fileName" value="" />

    </form>
    <input type="button" id="download" value="下载文件" />


    <script>
        //下载
        $("#download").click(function () {
            var form = $("#form");
            form.submit();

        });
    </script>


Published 43 original articles · won praise 35 · views 1584

Guess you like

Origin blog.csdn.net/qq_45244974/article/details/103598588