文件上传(表单,Ajax)、文件下载


文件上传:

表单方式:

MVC:

方法一、public ActionResult Upload2()
        {
            //获取要上传的文件名称及类型
            var fils = HttpContext.Request.Files[0];
            //文件名称分割成 名称和类型
            var temp = fils.FileName.Split('.');
            //获取类型
            var extendName = temp[temp.Length - 1];
            //设置储存路径
            var path = HttpContext.Server.MapPath("~/Filters/");
            //如果没有此路径
            if (!Directory.Exists(path))
            {
                //创建路径
                Directory.CreateDirectory(path);
            }
            //获取到时间格式的名称
            var name = DateTime.Now.ToFileTime() + "." + extendName;
            fils.SaveAs(Path.Combine(path, name));
            return Content("上传成功");
        }

方法二、 public void Upload(HttpPostedFileBase file)
        {            var fileName = file.FileName;
            var filePath = Server.MapPath(string.Format("~/{0}", "File"));
            file.SaveAs(Path.Combine(filePath, fileName));
            string sql = $"insert into Files values('{fileName}','**','{filePath}')";
            int i= DBHelper.ExecuteNonQuery(sql);             if (i>0)
            {
                //return Content("上传成功!");
                Response.Write("");
            }
            else
            {
                Response.Write("");
            }         } form表单:    

     
   
       下载文件     Ajax方式:        API:上传文件 控制器端
         public class FileOperationController : ApiController
        {
            [HttpPost]
            public FileResult UpLoad()
            {
                return help.UpLoad();
            }        }    MVC的视图页:    客户端
       
       
          < script >
            function ff()
        {
            var formData = new FormData();
            var file = document.getElementById("f1").files[0];
            formData.append("fileInfo", file);
               $.ajax({
            url: "https://localhost:44370/api/FileOperation/UpLoad",
                   type: "POST",
                    data: formData,
                    contentType: false,//必须false才会自动加上正确的Content-Type
                    processData: false,//必须false才会避开jQuery对 formdata 的默认处理,XMLHttpRequest会对 formdata 进行正确的处理
                   success: function(data) {
                   if (data.Code < 0)
                        alert(data.Msg)
                        else
                        alert(data.Url)
                    },
                    error: function(data) {
                    alert("上传失败!");
                }
            });
        }
    文件下载:

(1)返回filestream

         
   public FileStreamResult download()
      {
        string fileName = "aaa.txt";//客户端保存的文件名
        string filePath = Server.MapPath("~/Document/123.txt");//路径
        return File(new FileStream(filePath, FileMode.Open), "application/octet-stream",fileName);
}
 

其中://“text/plain”是文件MIME类型

(2)返回file

   public FileResult download()
      {
          string filePath = Server.MapPath("~/Document/123.txt");//路径
          return File(filePath, "text/plain", "welcome.txt"); //welcome.txt是客户端保存的名字
      }