• C#:使用ajax异步请求实现文件上传与下载功能。---项目框架API+MVC


    1.首先使用VS创建WebAPI项目

    (这里有个帮助类,将此帮助类复制到项目里,有兴趣可以学着写)

    //文件上传下载,导入导出辅助类
    
    public class APIFileHelp
    {
    
      //此为限制文件格式
      public string[] ExtentsfileName = new string[] { ".doc", ".xls", ".png", ".jpg" };
    
      //Upload为自定义的文件夹,在项目中创建
      public string UrlPath = "/Upload/";
    
      //响应对象 ,使用前先赋值
      public HttpResponse Response = HttpContext.Current.Response;
      public HttpRequest Request = HttpContext.Current.Request;
    
      //文件下载
      //downFileName下载后保存名,sourceFileName服务器端物理路径
      public void DownLoad(string downFileName, string sourceFileName)
      {
        if (File.Exists(sourceFileName))
        {
          Response.Clear();
          Response.ClearHeaders();
          Response.ClearContent();
          Response.Buffer = true;
          Response.AddHeader("content-disposition", string.Format("attachment; FileName={0}", downFileName));
          Response.Charset = "GB2312";
          Response.ContentEncoding = Encoding.GetEncoding("GB2312");
          Response.ContentType = MimeMapping.GetMimeMapping(downFileName);
          Response.WriteFile(sourceFileName);
          Response.Flush();
          Response.Close();
        }    
      }
    
    //文件上传操作
    public FileResult UpLoad()
    {
    //保存文件名
    string name = "";
    if (Request.Files.Count > 0)
    {
    string FileUrlResult = "";
    foreach (string fn in Request.Files)
    {
    var file = Request.Files[fn];
    name = file.FileName.ToString();
    var extenfilename = Path.GetExtension(file.FileName);
    //判断 路径是否存在
    string path = HttpContext.Current.Server.MapPath(UrlPath);
    if (!Directory.Exists(path))
    {
    Directory.CreateDirectory(path);
    }
    
    if (ExtentsfileName.Contains(extenfilename.ToLower()))
    {
    string urlfile = UrlPath + DateTime.Now.ToFileTime() + extenfilename;
    string filepath = HttpContext.Current.Server.MapPath(urlfile);
    file.SaveAs(filepath);
    FileUrlResult += urlfile + ";";
    }
    
    //格式不正确
    else
    {
      //实例化结果类
    return new FileResult() { Code = -1, Msg = "只允许上传指定格式文件" + string.Join(",", ExtentsfileName), Url = "" }; } } //上传成功 return new FileResult() { Code = 0, Name = name, Msg = "上传成功", Url = FileUrlResult }; } //上传失败 else { return new FileResult() { Code = -1, Msg = "不能上传空文件", Url = "" }; } } } //结果类 public class FileResult { public int Code { get; set; } //结果 public string Msg { get; set; } //提示信息 public string Url { get; set; } //地址 public string Name { get; set; } //文件名 }
    //控制器端
    public class FileOperationController : ApiController
    {    
    //实例化帮助类 APIFileHelp help
    = new APIFileHelp(); [HttpGet] public void DownLoad(string Url) { string filePath = HttpContext.Current.Server.MapPath(Url); FileInfo fi = new FileInfo(filePath); help.DownLoad(fi.Name, fi.FullName); } //文件上传 [HttpPost] public FileResult UpLoad() { return help.UpLoad(); } }
    //文件上传、下载: MVC端
    
    //文件下载
    //API地址+参数+自己定义的文件名+文件Url
    <a href = "https://localhost:44370/api/FileOperation/DownLoad?Url=/FileUpload/132211303318715030.xls" > 下载 </ a >
    <input type = "file" id="f1" />
    <input type = "button" value="aa" onclick="ff()"/>
    
    <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("上传失败!");
            }
        });
    }
    </script>
  • 相关阅读:
    Python:字母图形(蓝桥杯)
    Python:list列表中元素输出的几种情况
    Python:实现杨辉三角(蓝桥杯)
    Python:DataFrame转dict字典
    RedHat 5 Enterprise DHCP服务器的安装与配置(Windows验证)
    Python时间模块。
    django项目中form表单和ajax的文件上传功能。
    django项目后台权限管理功能。
    django项目中cxselect三级联动
    django项目用higcharts统计最近七天文章点击量。
  • 原文地址:https://www.cnblogs.com/igqx/p/13361619.html
Copyright © 2020-2023  润新知