//这是写的一个类,具体是上传图片的上传和下载

public class FileResult
    {
        public int Code { get; set; }
        public string Msg { get; set; }
        public string Url { get; set; }
    }

//首先在api方法内新建一个控制器

//控制器内写关于上传和下载的具体代码

// 允许上传的文件扩展名
        public string[] ExtentsfileName = new string[] { ".doc", ".xls", ".png",".jpg" };
        public string UrlPath = "/Upload/";
//下载
        [HttpGet]
        public void DownLoad(string Url)
        {
            string filePath = HttpContext.Current.Server.MapPath(Url);
            FileInfo fi = new FileInfo(filePath);
            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}", fi.Name));
                response.Charset = "GB2312";
                response.ContentEncoding = Encoding.GetEncoding("GB2312");
                response.ContentType = MimeMapping.GetMimeMapping(fi.Name);
                response.WriteFile(filePath);
                response.Flush();
                response.Close();
            }
        }
//上传
        [HttpPost]
        public FileResult UpLoad()
        {
            var request = HttpContext.Current.Request;
            if (request.Files.Count > 0)
            {
                var file = request.Files[0];
                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);
                    return new FileResult() { Code = 0, Msg = "上传成功", Url = urlfile };
                }
                else
                {
                    return new FileResult() { Code = -1, Msg = "只允许上传指定格式文件"+string.Join(",",ExtentsfileName), Url = "" };
                }
            }
            else
            {
                return new FileResult() { Code = -1, Msg = "不能上传空文件", Url = "" };
            }
        }
    }

//写完api方法之后写mvc前台

<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>
<a href = "https://localhost:44370/api/FileOperation/DownLoad?Url=/FileUpload/132211303318715030.xls" > 下载 </ a >
 
 
//ps记住要在api先加上跨域文件,不然api的方法会传不到mvc,本人经常忘记加跨域文件

C#MVC通过AJAX调用API方法进行上传下载的更多相关文章

  1. SpringMVC ajax技术无刷新文件上传下载删除示例

    参考 Spring MVC中上传文件实例 SpringMVC结合ajaxfileupload.js实现ajax无刷新文件上传 Spring MVC 文件上传下载 (FileOperateUtil.ja ...

  2. JS--------文件操作基本方法:上传/下载

    /** * 上传文件 * @param {any} files 文件 * @param {any} data 数据 * @returns [true,文件路径] * @returns [false,异 ...

  3. MVC中ajax调用API版信息分页显示

    效果图: API端采用三层架构控制器显示界面: UserBll bll = new UserBll(); //获取用户所有信息 [HttpGet] ,) { List<UserInfo> ...

  4. AWS S3 API实现文件上传下载

    http://blog.csdn.net/marvin198801/article/details/47662965

  5. mac 下配置连接Linux服务器方法,上传下载文件操作

    1.先按照文档在本地生成SSHkey 2.mac输入 sudo -i 进入超级管理员#模式下,然后 创建用户 #useradd XXXadmin #passwd XXXadmin XXXadmin用户 ...

  6. 调用Web API将文件上传到服务器的方法(.Net Core)

    最近遇到一个将Excel通过Web API存到服务器的问题,其中涉及到Excel的读取.调用API.Web  API怎么进行接收. 一. Excel的读取.调用API Excel读取以及调用API的代 ...

  7. 在Asp.Net MVC中用Ajax回调后台方法

    在Asp.Net MVC中用Ajax回调后台方法基本格式: var operData = ...; //传递的参数(action中定义的) var type = ...; //传递的参数(action ...

  8. asp.net如何在前台利用jquery Ajax调用后台方法

    一 :最近因为帮同事开发项目使用到了asp.net,而我又想实现Ajax异步请求....从网上查询了一下资料之后,原来在asp.net中利用Ajax调用后台方法同样很简单,为了便于自己以后查看,特将此 ...

  9. java 中使用ajax调用后台方法注意事项

    java 中使用ajax调用后台方法注意事项,后台方法一定要加@ResponseBody jQuery.validator.addMethod("checkRuleName",fu ...

随机推荐

  1. CodeForces - 855B ring 前缀和

    邓布利多教授正在帮助哈利摧毁魂器.当他怀疑一个魂器出现在那里时,他去了冈特沙克.他看到Marvolo Gaunt的戒指,并将其确定为魂器.虽然他摧毁了它,但仍然受到诅咒的影响.斯内普教授正在帮助邓布利 ...

  2. ppt和pptx转图片完整代码,解决2003版和2007版中文乱码问题

    引入所需依赖,注意poi版本,新版本不支持,最好使用和我一样的版本. <!-- https://mvnrepository.com/artifact/org.apache.poi/poi --& ...

  3. Linux下nginx自启动配置

    1.在linux系统的/etc/init.d/目录下创建nginx文件 vim /etc/init.d/nginx 在脚本中添加一下命令(内容主要参考官方文档) #!/bin/sh # # nginx ...

  4. 详解 Set接口

    (请关注 本人"集合"总集篇博文--<详解 Collection接口>) 在Collection接口的子接口中,最重要的,也是最常见的两个-- List接口 和 Set ...

  5. 2019 kali安装pip/pip3

    新版的kali中内置的python没有安装pip 0x01 pip(python2)安装: https://bootstrap.pypa.io/2.6/get-pip.py python2 get-p ...

  6. javascript: Object对象生成URL参数

    code: function makeQuery(queryObject) { const query = Object.entries(queryObject) .reduce((result, e ...

  7. java中String StringBuilder StringBuffer比较和效率(性能)测试

    string stringbuilder stringbuffer三者的区别 从JDK源码看,String.StringBuilder.StringBuffer都是存放在char[] 数组字符串. 简 ...

  8. 如何保证kafka消息不丢失

    背景 这里的kafka值得是broker,broker消息丢失的边界需要对齐一下: 1 已经提交的消息 2 有限度的持久化 如果消息没提交成功,并不是broke丢失了消息: 有限度的持久化(broke ...

  9. HTTPS之密钥知识与密钥工具Keytool和Keystore-Explorer

    1 简介 之前文章<Springboot整合https原来这么简单>讲解过一些基础的密码学知识和Springboot整合HTTPS.本文将更深入讲解密钥知识和密钥工具. 2 密钥知识-非对 ...

  10. TP5 JSON对象数组转换为普通数组

    来源于:https://blog.csdn.net/lingchen__/article/details/67671047 使用TP5框架做项目时,对于数据的查询返回的都是对象,虽然也可以当做普通的数 ...