• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C#WebAPI实现上传功能WebApi实现单个文件的上传下载

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

上传和下载是很常用的功能了,只有当用到的时候才发现不会写...,经过一番百度、筛选、整理修改后,实现了功能,下面简单的记录下实现方法。

一、上传功能

1.前端代码

上传文件 <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>

2.后台代码

 1 /// <summary>
 2         /// 上传文件
 3         /// </summary>
 4         [HttpPost]
 5         public string UploadFile()
 6         {
 7             string result = string.Empty;
 8             try
 9             {
10                 string uploadPath = HttpContext.Current.Server.MapPath("~/App_Data/");
11                 HttpRequest request = System.Web.HttpContext.Current.Request;
12                 HttpFileCollection fileCollection = request.Files;
13                 // 判断是否有文件
14                 if (fileCollection.Count > 0)
15                 {
16                     // 获取文件
17                     HttpPostedFile httpPostedFile = fileCollection[0];
18                     string fileExtension = Path.GetExtension(httpPostedFile.FileName);// 文件扩展名
19                     string fileName = Guid.NewGuid().ToString() + fileExtension;// 名称
20                     string filePath = uploadPath + httpPostedFile.FileName;// 上传路径
21                     // 如果目录不存在则要先创建
22                     if (!Directory.Exists(uploadPath))
23                     {
24                         Directory.CreateDirectory(uploadPath);
25                     }
26                     // 保存新的文件
27                     while (File.Exists(filePath))
28                     {
29                         fileName = Guid.NewGuid().ToString() + fileExtension;
30                         filePath = uploadPath + fileName;
31                     }
32                     httpPostedFile.SaveAs(filePath);
33                     result = "上传成功";
34                 }
35             }
36             catch (Exception)
37             {
38                 result = "上传失败";
39             }
40             return result;
41         }

 

二、下载功能

1.前端代码

<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>

2.后台代码

 1 /// <summary>
 2         /// 下载文件
 3         /// </summary>
 4         [HttpGet]
 5         public void DownloadFile()
 6         {
 7             var request = HttpContext.Current.Request;
 8             NameValueCollection nvCollection = request.Params;
 9             string fileName = nvCollection.GetValues("fileName")[0];
10             string filePath = Path.Combine(HttpContext.Current.Server.MapPath("~/App_Data/"), fileName);
11             if (File.Exists(filePath))
12             {
13                 HttpResponse response = HttpContext.Current.Response;
14                 response.Clear();
15                 response.ClearHeaders();
16                 response.ClearContent();
17                 response.Buffer = true;
18                 response.AddHeader("content-disposition", string.Format("attachment; FileName={0}", fileName));
19                 response.Charset = "GB2312";
20                 response.ContentEncoding = Encoding.GetEncoding("GB2312");
21                 response.ContentType = MimeMapping.GetMimeMapping(fileName);
22                 response.WriteFile(filePath);
23                 response.Flush();
24                 response.Close();
25             }
26         }

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C++中的传值与传址发布时间:2022-07-14
下一篇:
C语言-第10课-单引号和双引号发布时间:2022-07-14
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap