webapi 上传文件 后台调用_webapi 后台调用 - CSDN
精华内容
参与话题
  • C# WebAPI 上传文件和图片

    万次阅读 2017-08-29 10:37:47
    前端使用 ajax+fromData 方式上传; 直接贴源码: 前台页面: Title function doUpload() { var formData = new FormData($( "#uploadForm" )[0]); $.ajax({

    前端使用 ajax+fromData 方式上传;

    直接贴源码:

    前台页面:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
        <script>
            function doUpload() {
                var formData = new FormData($( "#uploadForm" )[0]);
                $.ajax({
                    url: 'http://localhost:16516/api/Upload?guid=1234567890' ,
                    type: 'POST',
                    data: formData,
                    async: false,
                    cache: false,
                    contentType: false,
                    processData: false,
                    success: function (returndata) {
                        alert(returndata);
                    },
                    error: function (returndata) {
                        alert(returndata);
                    }
                });
            }
        </script>
    
    </head>
    <body>
    <form id= "uploadForm">
        <p >指定文件名: <input type="text" name="filename" value= ""/></p >
        <p >上传文件: <input type="file" name="file"/></p>
        <input type="button" value="上传" οnclick="doUpload()" />
    </form>
    </body>
    
    </html>

    webapi 后台代码:
     /// <summary>
            /// 文件上传
            /// </summary>
            /// <param name="guid">GUID由前端生成</param>
            /// <returns></returns>
            [HttpPost]
            [Route("api/Upload")]
            public async Task<string> Post(string guid)
            {
    
                if (!Request.Content.IsMimeMultipartContent())
                {
                    throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
                }
                string uploadFolderPath = HostingEnvironment.MapPath("~/Upload");
    
                //如果路径不存在,创建路径
                if (!Directory.Exists(uploadFolderPath))
                    Directory.CreateDirectory(uploadFolderPath);
    
                List<string> files = new List<string>();
                var provider = new WithExtensionMultipartFormDataStreamProvider(uploadFolderPath, guid);
                try
                {
                    // Read the form data.
                    await Request.Content.ReadAsMultipartAsync(provider);
    
                    // This illustrates how to get the file names.
                  
                    foreach (var file in provider.FileData)
                    {//接收文件
                        files.Add(Path.GetFileName(file.LocalFileName));
                    }
                }
                catch
                {
                    throw;
                }
                return string.Join(",", files);
            }

    如需多文件上传,GUID请后台生成。

    WithExtensionMultipartFormDataStreamProvider 文件说明:


    public class WithExtensionMultipartFormDataStreamProvider : MultipartFormDataStreamProvider
        {
            public string guid { get; set; }
    
            public WithExtensionMultipartFormDataStreamProvider(string rootPath,string guidStr)
                : base(rootPath)
            {
                guid = guidStr;
            }
    
            public override string GetLocalFileName(System.Net.Http.Headers.HttpContentHeaders headers)
            {
                string extension = !string.IsNullOrWhiteSpace(headers.ContentDisposition.FileName) ? Path.GetExtension(GetValidFileName(headers.ContentDisposition.FileName)) : "";
                return guid + extension;
            }
    
            private string GetValidFileName(string filePath)
            {
                char[] invalids = System.IO.Path.GetInvalidFileNameChars();
                return String.Join("_", filePath.Split(invalids, StringSplitOptions.RemoveEmptyEntries)).TrimEnd('.');
            }
        }

    OK,测试成功!


    展开全文
  • 我有个项目,需要在VB.NET写的WINDOWS应用程序中,利用WEBAPI按POST MULTI/FORM-DATA的形式向网站上传字符串和文件,不知如何写代码?我是个新手^0^
  • 今天花了一天时间,研究了微信小程序的图片上传功能。总体思路为:小程序读取手机相册或者摄像头拍照,然后将图片post到web apiapi接收图片信息,存到硬盘,然后将路径存储在数据库中。 问题:1、首先要解决跨域...

     

    插播一条广告:软件设计师考试系统:

    本人自己开发的网址:

    http://94.191.14.138:8025/Html/Customer/Main.html#/Index

     

    今天花了一天时间,研究了微信小程序的图片上传功能。总体思路为:小程序读取手机相册或者摄像头拍照,然后将图片post到web api。api接收图片信息,存到硬盘,然后将路径存储在数据库中。

    问题:1、首先要解决跨域问题,这个在mvc5的web api的默认配置中修改即可。

              2、post提交问题,在这里我遇到了大坑,往上研究了一大圈,各种五谷杂粮的代码,基本上都是浪费流量。我的解决方案一会发出。

    解决了上面两个问题,直接上代码:

    wx.chooseImage({
      success: function(res) {
        var tempFilePaths = res.tempFilePaths
        wx.uploadFile({
          url: 'https://。。。。/upload', //仅为示例,非真实的接口地址
          filePath: tempFilePaths[0],
          name: 'file',
          formData:{
            'user': 'test'
          },
          success: function(res){
            var data = res.data
            //do something
          }
        })
      }
    })

    使用上面的代码就可以完成图片的上传,url修改为你的api地址。

    然后是web api的代码,奉献核心代码:

     public IHttpActionResult Post()
            {
                HttpFileCollection files = HttpContext.Current.Request.Files;
    
                foreach (string key in files.AllKeys)
                {
                    HttpPostedFile file = files[key];//file.ContentLength文件长度
                    if (string.IsNullOrEmpty(file.FileName) == false)
                        file.SaveAs(HttpContext.Current.Server.MapPath("~/imgcoll/") + file.FileName);
                }
    
                return Ok("success2");
            }

    好了,这是我花了一天总结的,看起来很简单,实际上真的很费功夫,希望和我一样被困扰的同仁能够顺利的完成。

    展开全文
  • WEBAPI那里,Post大概是这么设计的 ``` public string Post(Student stu) ``` 要传入的是个类。那么如何在winform中传参成功呢?
  • 说简单,是从具体的代码实现上来说的,.NET的文件下载方式有很多种,本示例给大家介绍的是ASP.NET Web Api方式返回HttpResponseMessage下载文件到本地。实现的方法很简单,其中就是读取服务器的指定路径文件流,将其...

    下载文件到本地是很多项目开发中需要实现的一个很简单的功能。说简单,是从具体的代码实现上来说的,.NET的文件下载方式有很多种,本示例给大家介绍的是ASP.NET Web Api方式返回HttpResponseMessage下载文件到本地。实现的方法很简单,其中就是读取服务器的指定路径文件流,将其做为返回的HttpResponseMessage的Content。直接贴出DownloadController控件器的代码:

    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
    {
      [RoutePrefix("download")]
      public class DownloadController : ApiController
      {
        [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);
          }
        }
      }
    }

    实现以上控制器后,我们可以直接打开这个api的地址(示例中的地址为:http://localhost:60560/download/get_demo_file),即可弹出下载文件的对话框了,如图:asp-net-web-api-download-file当然,也可以直接通过示例项目首页的下载链接体验,点击“下载示例文件”按钮,将会弹出保存文件的提示。 好了,示例比较简单,不用多说了。点击这里下载示例源码。

    展开全文
  • 比如这样的一个api,java怎么获得数据 上传订单备注 简要描述: 用户上传订单备注 请求URL: app-admin-SetMessage 请求方式: get 参数: 参数名 必选 类型 说明 token 是 string 验证 id 是 string 订单id msg...
  • 取到上传图片的集合,循环调用小程序wx.UploadFile方法,依次上传 后端取到文件之后生成唯一MD5码(相同的文件生成的MD5码是唯一的),然后取前两位后两位创建文件夹,保存图片前判断下图片是否存在。(这样一个完全...

    找了好久都没找到合适的小程序批量上传图片的方法,最终还是只能循环上传,就自己扣了一个:
    思路:

    1. 调用小程序上传图片接口后(API参考小程序开发文档,很详细),取到上传图片的集合,循环调用小程序wx.UploadFile方法,依次上传
    2. 后端取到文件之后生成唯一MD5码(相同的文件生成的MD5码是唯一的),然后取前两位后两位创建文件夹,保存图片前判断下图片是否存在。(这样一个完全相同的图片就不会被重复被保存在服务器上了)
    3. 把每次上传后端API接口返回的MD5和文件后缀名,以逗号分隔拼成字符串。所有的文件上传完成之后,请求APi接口,批量保存在数据库TB_File表中;
    4. 以后调用时通过生成MD5的逻辑截取路径取图片,我这里取的前两位后两位

    Api代码:

    [HttpPost]
            public IHttpActionResult SaveImages2()
            {
                HttpPostedFile file = HttpContext.Current.Request.Files["file"];//接收
                string ext = Path.GetExtension(file.FileName);//文件后缀名
                Stream s = file.InputStream;//文件流
                MD5 md5 = new MD5CryptoServiceProvider();
                byte[] retVal = md5.ComputeHash(s);
                StringBuilder sb = new StringBuilder();
                for (int i = 0; i < retVal.Length; i++)
                {
                    sb.Append(retVal[i].ToString("x2"));
                }
                string md5Res = sb.ToString();//上面的代码是为了生成文件唯一的MD5码
                string path = md5Res .Substring(0, 2);
                string path1=md5Res .Substring(md5Res .Length - 2, 2)//取MD5的前两位和后两位生成文件夹,把图片存在后两位的文件夹内
                string fileSaveLocation = $"E:\\CoolSchoolImages\\{path}\\{path1}\\{md5Res }.jpg";.//文件最终保存路径
                if (!File.Exists(fileSaveLocation))//判断文件是否存在
                {//若不存在
                    Directory.CreateDirectory($"E:\\CoolSchoolImages\\{path}\\{path1}");//这个方法创建文件夹的时候如果文件夹存在的话就不会创建了,所以不管文件有没有都调用一下,省得写那么多判断
                    file.SaveAs(fileSaveLocation);保存文件
                }
                return Ok(md5Res +ext);返回MD5码,用于后面保存在数据库
            }
    

    小程序部分代码
    这里的imgUrls是选择的图片数组,后面把返回的文件名加逗号拼接成了字符串,用于后面保存到数据库
    在这里插入图片描述

    展开全文
  • 所做的 java web 的整体架构非常简单易懂,整个网站以前端为主体,通过ajax与后台数据交互,前后端低耦合,有些面向服务架构的味道。因为博主C#做的比价多,所以也借机用相同的方式玩一玩asp.net。 这篇博客主要...
  • 最近做一些填单台的项目,需要调用高拍仪对证件进行拍照。...前端界面h5 api调用本地摄像头,然后拍照结束后可以截取预览,最后将结果以base64提交到后台. 技术用到的主要有 vedio标签 canvas navigat...
  • 这套小程序包括前台、后台、数据库等部分,估计需要花些时间了。   小程序开发在入门阶段直接参照官方的帮助文档即可,包括基本语法(和Vue.js大同小异)、开发工具(腾讯提供了一个小的开发工具)等,官方文档:...
  • 调用第三方api在线生成二维码

    万次阅读 2018-08-27 17:40:06
    我写过一篇文章是java代码后端自己传入链接由本地代码生成二维码图片并保存在本地,今天我们实现调用第三方在线生成二维码 首先我们找到一个在线生成二维码的api接口,因为这样的api接口有许多,这里我提供一个参考...
  • .net 后台Post,get方式调用webapi

    热门讨论 2020-07-30 14:44:50
    .net 后台Post,get方式调用webapi,包括上传文件
  • 项目中需要用到图片上传,昨天搞整了一下,对我这个菜鸟来说,还是有很多值得注意的地方。  h5+提供了可以调用原生安卓API的功能,当然也能调用camera。需要注意的是,拍照后的保存路径如果不自己设置的话,是...
  • 1,客户端的代码 NSString *api = @"http://192.168.20.189:6900/bk/api/upload";... ASIFormDataRequest *req = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:api]]; [req setRequestMethod:@"POST"];
  • 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 ...
  • 百度鹰眼Web服务API开发使用教程

    千次阅读 2019-02-27 10:37:30
    百度地图开发 - 鹰眼轨迹 一、 准备工作 ...鹰眼WebAPI轨迹控制台 二、 开发流程 全程官方讲解文档 打开鹰眼控制台和Postman软件 创建entity对象 官方讲解文档  首先,设置entity和track等相关字...
  • 一般来讲,前端不会给后端接口,而是后端给前端接口的情况比较普遍。一些人可能不理解接口和...网上用户上传图片作为头像这个需求需要后台人员处理,当用户登录 修改自己个人信息的时候,上传了头像。此时,后台处...
  • 通过 Amazon API Gateway,您可以根据在 AWS Lambda 中运行的代码快速、轻松地创建自定义 API,然后通过 API 调用 Lambda 代码。Amazon API Gateway 可以用您的账户执行 AWS Lambda 代码,也可以在 AWS 外部通过可
  • 这是一个文件上传功能。 c#后台如何接收 我需要获取这个控件选择的文件的路径 _前端_ ``` 上传 下载 ``` _js_ ``` $(document).ready(function () { $("#btnUpLoad").click(function () { $.ajax...
  • 我自己开发的dedecms织梦小程序插件万能api接口,无需有php或sql基础,不需要依赖任何第三方网站授权,后台一键安装,支持gbk和utf版 dedecms小程序插件目前主要的功能有: (1)网站栏目调用:可以调用任意栏目、...
1 2 3 4 5 ... 20
收藏数 22,353
精华内容 8,941
关键字:

webapi 上传文件 后台调用