1 上传文件 <input type="file" />
2 <input type="button" value="上传文件" />
3
4 <script>
5 //上传
6 $("#upload").click(function () {
7 var formData = new FormData();
8 var file = document.getElementById("file").files[0];
9 formData.append("fileInfo", file);
10 $.ajax({
11 url: "../api/File/UploadFile",
12 type: "POST",
13 data: formData,
14 contentType: false,//必须false才会自动加上正确的Content-Type
15 processData: false,//必须false才会避开jQuery对 formdata 的默认处理,XMLHttpRequest会对 formdata 进行正确的处理
16 success: function (data) {
17 alert(data);
18 },
19 error: function (data) {
20 alert("上传失败!");
21 }
22 });
23 });
24 </script>
25
26
27 /// <summary>
28 /// 上传文件
29 /// </summary>
30 [HttpPost]
31 public string UploadFile()
32 {
33 string result = string.Empty;
34 try
35 {
36 string uploadPath = HttpContext.Current.Server.MapPath("~/App_Data/");
37 HttpRequest request = System.Web.HttpContext.Current.Request;
38 HttpFileCollection fileCollection = request.Files;
39 // 判断是否有文件
40 if (fileCollection.Count > 0)
41 {
42 // 获取文件
43 HttpPostedFile httpPostedFile = fileCollection[0];
44 string fileExtension = Path.GetExtension(httpPostedFile.FileName);// 文件扩展名
45 string fileName = Guid.NewGuid().ToString() + fileExtension;// 名称
46 string filePath = uploadPath + httpPostedFile.FileName;// 上传路径
47 // 如果目录不存在则要先创建
48 if (!Directory.Exists(uploadPath))
49 {
50 Directory.CreateDirectory(uploadPath);
51 }
52 // 保存新的文件
53 while (File.Exists(filePath))
54 {
55 fileName = Guid.NewGuid().ToString() + fileExtension;
56 filePath = uploadPath + fileName;
57 }
58 httpPostedFile.SaveAs(filePath);
59 result = "上传成功";
60 }
61 }
62 catch (Exception)
63 {
64 result = "上传失败";
65 }
66 return result;
67 }
68
69
70
71 <form action="../api/File/DownloadFile" method="get" >
72 下载文件 <input type="text" name="fileName" value="222" />
73 </form>
74 <input type="button" value="下载文件" />
75
76 <script>
77 //下载
78 $("#download").click(function () {
79 var form = $("#form");
80 form.submit();
81 });
82 </script>
83
84
85 /// <summary>
86 /// 下载文件
87 /// </summary>
88 [HttpGet]
89 public void DownloadFile()
90 {
91 var request = HttpContext.Current.Request;
92 NameValueCollection nvCollection = request.Params;
93 string fileName = nvCollection.GetValues("fileName")[0];
94 string filePath = Path.Combine(HttpContext.Current.Server.MapPath("~/App_Data/"), fileName);
95 if (File.Exists(filePath))
96 {
97 HttpResponse response = HttpContext.Current.Response;
98 response.Clear();
99 response.ClearHeaders();
100 response.ClearContent();
101 response.Buffer = true;
102 response.AddHeader("content-disposition", string.Format("attachment; FileName={0}", fileName));
103 response.Charset = "GB2312";
104 response.ContentEncoding = Encoding.GetEncoding("GB2312");
105 response.ContentType = MimeMapping.GetMimeMapping(fileName);
106 response.WriteFile(filePath);
107 response.Flush();
108 response.Close();
109 }
110 }