webapi 根据url保存文件_webapi如何在保存文件的同时更改文件名 - CSDN
精华内容
参与话题
  • View <h1>Web Api下载文件示例 <p><a href="http://localhost:60560/api/download/get_demo_file" class="btn btn-primary btn-lg">下载示例文件 »</a></p> using System; usin

    View

    <div class="jumbotron">
        <h1>Web Api下载文件示例</h1>
        <p><a href="http://localhost:60560/api/download/get_demo_file" class="btn btn-primary btn-lg">下载示例文件 &raquo;</a></p>
    </div>
    

    这里写图片描述


    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Net;
    using System.Net.Http;
    using System.Net.Http.Headers;
    using System.Web.Http;
    
    namespace DownloadFileFromWebApi.Controllers
    {
    
        /// <summary>
        /// 实现的方法很简单,其中就是读取服务器的指定路径文件流,将其做为返回的HttpResponseMessage的Content
        /// </summary>
        [RoutePrefix("api/download")]
        public class DownloadController : ApiController
        {
            [HttpGet,Route("get_demo_file")]
            public HttpResponseMessage GetFileFromWebApi()
            {
                try
                {
                    var FilePath = System.Web.Hosting.HostingEnvironment.MapPath(@"~/download/EditPlus64_xp85.com.zip");
                    var stream = new FileStream(FilePath, FileMode.Open);
                    HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK);
                    response.Content = new StreamContent(stream);
                    response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
                    response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
                    {
                        FileName = "Wep Api Demo File.zip"
                    };
                    return response;
                }
                catch
                {
                    return new HttpResponseMessage(HttpStatusCode.NoContent);
                }
            }
        }
    }
    
    展开全文
  • ASP.NET WebAPI开发实例

    万次阅读 多人点赞 2018-09-12 16:32:14
    一、环境搭建 打开VS2012, IDE版本为Visual Studio Ultimate 2012 文件 - 新建项目 - Visual C# - Web – ASP.NET MVC4 Web 应用程序...选择联机 – 搜索webapi – 安装webapi2.2 – 安装webapi2.2helppage ...

    一、环境搭建

    打开VS2012, IDE版本为Visual Studio Ultimate 2012
    这里写图片描述

    文件 - 新建项目 - Visual C# - Web – ASP.NET MVC4 Web 应用程序
    这里写图片描述
    选择空项目组
    这里写图片描述
    项目右键 – 管理NuGet程序包
    这里写图片描述
    选择联机 – 搜索webapi – 安装webapi2.2 – 安装webapi2.2helppage
    这里写图片描述
    Webapi2.2为restApi开发依赖库,webapi2.2helppage为restApi帮助文档自动生成依赖库,安装成功后,项目目录中会新增一个Areas文件夹,存放的是helppage的相关代码。
    项目右键 – 属性
    这里写图片描述
    选择生成选项 – 勾选XML文档文件 – 复制路径 – 保存
    这里写图片描述
    Areas – HelpPage – App_Start – HelpPageConfig.cs
    这里写图片描述
    反注释 – 更改路径
    这里写图片描述
    App_Start – RouteConfig.cs
    这里写图片描述
    添加代码

    routes.MapRoute(
        "HelpPage", // 路由名称
        "{controller}/{action}/{id}", // 带有参数的 URL
        new { controller = "help", action = "Index", id = UrlParameter.Optional }, // 参数默认值
        new string[] { "mvcProject.Areas.HelpPage.Controllers" }
    ).DataTokens.Add("Area", "HelpPage");

    这里写图片描述
    App_Start – WebApiConfig.cs
    这里写图片描述
    添加{action}
    这里写图片描述

    Controllers右键 – 添加 – 控制器
    这里写图片描述
    选择包含空读/写操作的API控制器 – 添加
    这里写图片描述

    运行项目
    这里写图片描述
    测试api – 输入http://localhost:10830/api/test/get(端口号改为自己的端口)
    这里写图片描述
    这里写图片描述

    二、 请求方式

    http://www.cnblogs.com/landeanfen/p/5337072.html
    https://blog.csdn.net/qq_22267353/article/details/82216535

    三、 跨域问题

    项目右键 – 管理NuGet程序包
    这里写图片描述
    联机 – 搜索webApi
    这里写图片描述
    Web.config
    这里写图片描述
    添加代码

    <add key="cors_allowOrigins" value="*" />
    <add key="cors_allowHeaders" value="*" />
    <add key="cors_allowMethods" value="*" />

    cors_allowOrigins 表示允许请求的网站, *表示允许所有网站请求
    这里写图片描述
    App_Start – WebApiConfig.cs
    这里写图片描述
    添加代码

    using System.Configuration;
    
    var allowOrigins = ConfigurationManager.AppSettings["cors_allowOrigins"];
    var allowHeaders = ConfigurationManager.AppSettings["cors_allowHeaders"];
    var allowMethods = ConfigurationManager.AppSettings["cors_allowMethods"];
    var globalCors = new System.Web.Http.Cors.EnableCorsAttribute(allowOrigins, allowHeaders, allowMethods)
    {
        SupportsCredentials = true
    };
    config.EnableCors(globalCors);

    这里写图片描述

    四、 打包发布

    项目 – 右键 – 发布
    这里写图片描述
    新建配置文件
    这里写图片描述

    名称随便取
    这里写图片描述
    发布方法 – 文件系统
    这里写图片描述
    选择网站包存放的位置
    这里写图片描述
    点击发布
    这里写图片描述

    这里写图片描述

    展开全文
  • WebApi接收文件上传

    千次阅读 2018-08-15 10:19:04
    html代码 &lt;div&gt; &lt;input type="file" name="FileUpload" id="FileUpload"&gt; &lt;a class="layui-btn layui-btn-mini".../

    html代码

    <div>
        <input type="file" name="FileUpload" id="FileUpload">
        <a class="layui-btn layui-btn-mini" id="btn_uploadimg">上传图片</a>
    </div>
    
    
       

    js

     $(function () {
            $("#btn_uploadimg").click(function () {
                var fileObj = document.getElementById("FileUpload").files[0]; // js 获取文件对象
                if (typeof (fileObj) == "undefined" || fileObj.size <= 0) {
                    alert("请选择图片");
                    return;
                }
                var formFile = new FormData();
                formFile.append("action", "UploadVMKImagePath");
                formFile.append("file1", fileObj); //加入文件对象
                formFile.append("file2", fileObj);
                //第一种  XMLHttpRequest 对象
                //var xhr = new XMLHttpRequest();
                //xhr.open("post", "/Admin/Ajax/VMKHandler.ashx", true);
                //xhr.onload = function () {
                //    alert("上传完成!");
                //};
                //xhr.send(formFile);
    
                //第二种 ajax 提交
    
                var data = formFile;
                $.ajax({
                    url: "http://localhost:1575/Plan/Import?test=1",
                    data: data,
                    type: "Post",
                    dataType: "json",
                    cache: false,//上传文件无需缓存
                    processData: false,//用于对data参数进行序列化处理 这里必须false
                    contentType: false, //必须
                    success: function (result) {
                        alert(result.Success);
                    },
                })
            })
        })

    后台代码

     //接收附件
                                string str = "";
                                HttpRequest request = HttpContext.Current.Request;
                                HttpFileCollection fileCollection = request.Files;
                                for (int i = 0; i < request.Files.Count; i++)
                                {
                                    FileSrc fs = FileHelper.UpdateFile(fileCollection[i]);//上传文件到本地
                                    if (fs.success == "1")
                                    {
                                        str = str + "," + fs.rsrc;//组合附件名称
                                    }
                                }
                                if (!string.IsNullOrEmpty(str))
                                {
                                    str = str.Substring(1, str.Length - 1);//去掉第一个逗号
                                }

     

     

    展开全文
  • 1.文件流 1.1 客户端 从上传组件中获取InputStream,转换为byte[],组装对象上传 try{ byte[] buffer = new byte[filedata.InputStream.Length]; filedata.InputStream.Read(buffer, 0, bu...

     博客仅用于记录工作学习中遇到的坑,欢迎交流!

    1.文件流

    1.1 客户端

    从上传组件中获取InputStream,转换为byte[],组装对象上传

      try{    byte[] buffer = new byte[filedata.InputStream.Length];
                    filedata.InputStream.Read(buffer, 0, buffer.Length);
                    var requstData = new
                    {
                        file = buffer,
                        path = resultPath,
                        fileName = filename
                    };
                    var result = UrlRequestHelper.HttpPostRequst(ConfigurationManager.AppSettings["FileUploadPath"], JsonConvert.SerializeObject(requstData), "");
                }

     httppost重写

     /// <summary>
            /// 发送post请求
            /// </summary>
            /// <param name="postData"></param>        
            /// <returns></returns>
            public static string HttpPostRequst(string url, string postData, string ActionUrl)
            {
                byte[] bs = Encoding.UTF8.GetBytes(postData);
    
                HttpWebRequest result = (HttpWebRequest)WebRequest.Create(url + ActionUrl);
                result.ContentType = "application/json";
                result.ContentLength = bs.Length;
                result.Method = "POST";
    
                using (Stream reqStream = result.GetRequestStream())
                {
                    reqStream.Write(bs, 0, bs.Length);
                }
                using (WebResponse wr = result.GetResponse())
                {
                    string reader = new StreamReader(wr.GetResponseStream(),
                        Encoding.UTF8).ReadToEnd();
                    return reader;
                }
            }

     设置webconfig的maxRequestLength

      <!--maxRequestLength就是文件的最大字符数,最大值不能超过2个G左右,executionTimeout是超时时间-->
        <httpRuntime targetFramework="4.5" maxRequestLength="1073741824" executionTimeout="3600" requestValidationMode="2.0" />
      

    1.2 webapi

    配置接收最大值

      <security>
          <!--配置允许接收最大G -->
          <requestFiltering>
            <requestLimits maxAllowedContentLength="2000000000" />
          </requestFiltering>
        </security>

    由[FromBody] object bit 接收,DeserializeObject转对象

      [HttpPost]
            public string FileUp([FromBody] object bit)
    
            {
    
                lock (_lock)
                {
                    string jsonstr = JsonConvert.SerializeObject(bit);
                    Data res = JsonConvert.DeserializeObject<Data>(jsonstr);
    
                    return SaveFile(res.file, res.path, res.fileName);
                }
            }

    重点:byte[] 转stream  ,写入文件;

       private string SaveFile(byte[] file, string path, string fileName)
            {
                try
                {
                    var serverPath = configPath;   //存储路径
                    CreatePath(serverPath + @path);
                    var filename = fileName;
                    var filePath = string.Format(@"{0}\{1}", serverPath + @path, filename);     //保存完整路径
                    var fullpath = filePath;     //流写入路径
                   
                    //创建文件  
    
                    using (var ms = new MemoryStream())
                    {
                        MemoryStream m = new MemoryStream(file);
                        string files = string.Format(@"{0}", fullpath);
                        FileStream fs = new FileStream(files, FileMode.OpenOrCreate);
                        m.WriteTo(fs);
                        m.Close();
                        fs.Close();
                        m = null;
                        fs = null;
                        return fullpath;
                    }
                }
                catch (Exception ex)
                {
                    throw ex;
    
                }
            }

    遇到的坑:文件夹权限问题(如果没遇到可以不用)

     /// <summary>
            /// 创建文件路径
            /// </summary>
            /// <param name="filepath"></param>
            /// <returns></returns>
            private void CreatePath(string filepath)
            {
                if (!Directory.Exists(filepath))
                {
                    var securityRules = new DirectorySecurity();
                    securityRules.AddAccessRule(new FileSystemAccessRule(System.Environment.UserName, FileSystemRights.FullControl, AccessControlType.Allow));
                    securityRules.AddAccessRule(new FileSystemAccessRule("Everyone", FileSystemRights.FullControl, AccessControlType.Allow));
                    securityRules.AddAccessRule(new FileSystemAccessRule("NETWORK SERVICE", FileSystemRights.FullControl, AccessControlType.Allow));
                    Directory.CreateDirectory(filepath, securityRules);
                }
            }

    学习笔记!

    展开全文
  • 调用第三方api在线生成二维码

    万次阅读 2018-08-27 17:40:06
    我写过一篇文章是java代码后端自己传入链接由本地代码生成二维码图片并保存在本地,今天我们实现调用第三方在线生成二维码 首先我们找到一个在线生成二维码的api接口,因为这样的api接口有许多,这里我提供一个参考...
  • 计算机专家设计出HTTP,使HTTP客户(如Web浏览器)能够从HTTP服务器(Web服务器)请求信息和服务,HTTP目前协议的版本是1.1.HTTP是一种无状态的协议,无状态是指Web浏览器和Web服务器之间不需要建立持久的连接,这意味...
  • 用JavaScript读取和保存文件 因为Google还不提供同步插件数据的功能,所以导入和导出插件配置就必须和文件打交道了。而出于安全原因,只有IE才提供访问文件的API;但随着HTML5的到来,其他浏览器也纷纷支持了。 ...
  • WebApi路由机制详解——看完不会用你打我

    万次阅读 多人点赞 2020-10-11 17:15:02
    随着前后端分离的大热,WebApi在项目中的作用也是越来越重要,由于公司的原因我之前一直没有机会参与前后端分离的项目,但WebApi还是要学的呀,因为这东西确实很有用,可单独部署、与前端和App交互都很方便,既然有...
  • MVC WebAPI 三层分布式框架开发

    万次阅读 热门讨论 2015-11-11 09:28:06
    前言:SOA(面向服务的架构)是目前企业应用开发过程中普遍采用的技术,基于MVC WebAPI三层分布式框架开发,以此适用于企业信息系统的业务处理,是本文论述的重点。此外,插件技术的应用,富客户端JQuery实现技术,...
  • 微信小程序设置http请求的步骤详解

    万次阅读 2016-11-07 11:02:34
    计算机专家设计出HTTP,使HTTP客户(如Web浏览器)能够从HTTP服务器(Web服务器)请求信息和服务,HTTP目前协议的版本是1.1.HTTP是一种无状态的协议,无状态是指Web浏览器和Web服务器之间不需要建立持久的连接,这意味...
  • c# WebApi之解决跨域问题:Cors

    千次阅读 2017-11-27 14:57:49
    二、CORS解决跨域问题跨域资源共享( CORS )机制允许 Web 应用服务器进行跨域访问控制,从而使跨域数据传输得以安全进行。它解决跨域问题的原理是通过向http的请求报文和响应报文里面加入相应的标识告诉浏览器它能...
  • jQuery + Ajax + WebAPI 上传文件

    千次阅读 2016-09-11 22:51:48
    HTML5 中已经可以用 Ajax 上传文件了,而且代码非常简单,借助 FormData 类即可发送文件数据。前端代码:<p><input type="file" id="upfile"> <p><input type="button" id="upJS" value="用原生JS上传"> <p><input ...
  • ASP.NET WEB API入门实例

    万次阅读 2017-03-17 11:57:43
    1.WebApi是什么  ASP.NET Web API 是一种框架,用于轻松构建可以由多种客户端(包括浏览器和移动设备)访问的 HTTP 服务。ASP.NET Web API 是一种用于在 .NET Framework 上构建 RESTful 应用程序的理想平台。 ...
  • Asp.net WebApi 项目示例(增删改查)

    万次阅读 热门讨论 2014-06-25 16:42:33
    1.页面运行效果
  • python 抓取图片, 写入excel

    千次阅读 2017-12-30 22:02:38
    # coding=utf-8import urllib2 # 导入urllib2模块...import xlsxwriterlisturl = ['https://contestimg.wish.com/api/webimage/59647c7e7baa287c180fa0e0-3-original.jpg','https://contestimg.wish.com/api/webimage/5
  • 回顾篇:淘宝API web开发一 授权登录

    万次阅读 2014-07-10 15:47:05
    今天重新看了之前做的API开发,
  • WebAPI开发中的定时处理

    千次阅读 2017-12-09 14:03:37
    WebAPI开发中会遇到一些需要定时或周期性处理的功能,比如每天早上6点从服务器下载数据或每隔半个小时查询统计数据等,有时也需要将数据向客户端推送。如何让web API也能处理定时或周期性的任务呢?1.处理周期性...
  • AWS S3 API实现文件上传下载

    万次阅读 热门讨论 2015-08-14 17:43:01
    近日项目需要使用AWS S3的API实现文件的上传和下载功能,才发现网上关于.net实现该功能的文章不多,有几篇也都是很老版本的AWS的使用描述了,写法和封装的类等等都基本上报废了。虽然这样,但还是很感谢那几篇文章,...
  • 目的: 通过Python实现的爬虫技术,及高德地图提供的web api,来获取地图上的POI点...2.高德地图的响应是xml文件,通过Python的DOM来解析xml,并保存POI数据 3.高德地图api使用说明,http://lbs.amap.com/api/webservic
  • H5的新特性及部分API详解

    万次阅读 2016-08-10 13:57:47
    **对可用性产生负面影响的元素:**frame、frameset、noframes新增的API语义:能够让你更恰当地描述你的内容是什么。 连通性:能够让你和服务器之间通过创新的新技术方法进行通信(web sockets等)。 离线 & 存储:...
1 2 3 4 5 ... 20
收藏数 101,962
精华内容 40,784
关键字:

webapi 根据url保存文件