iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > ASP.NET >asp.net core webapi文件上传功能的实现
  • 175
分享到

asp.net core webapi文件上传功能的实现

netASP.NETwebapicoreASP 2022-06-07 22:06:52 175人浏览 薄情痞子
摘要

最近开发一个新项目,使用了ASP.net core 2.0,采用webapi开发后台,postgresql为数据库。最先来的问题就是上传文件的问题。 POST文件的一些坑 使用

最近开发一个新项目,使用了ASP.net core 2.0,采用webapi开发后台,postgresql数据库。最先来的问题就是上传文件的问题。

POST文件的一些坑

使用默认模板创建WEBapi的controller后,post请求,默认有


 // POST api/values
  [HttpPost]
  public void Post([FromBody]string value)
  {
  }

请求使用了

[FromBody]
标记,用来指示用请求体里获得数据。

对于文件上传请求,直接在这个Post函数里使用

Request.FORM.Files
是不行的,无法成功路由。
典型上传,需要设置前端发送的请求
Content-Type
multipart/form-data
,然后在控制器类加上特性修饰:


 [Produces("application/JSON")]
 [Consumes("application/json", "multipart/form-data")]//此处为新增
 [Route("api/[controller]")]
 public class FileController : Controller

指示该controller能够接受

multipart/form-data
形式的数据。对应的,修改post的代码如下:


 // POST: api/File
  [HttpPost]
  public Task<ActionResult> Post(IFormCollection files)

这里需要注意,使用的是IFormCollection。这是IForm的类型集合,实际上就是

Request.Form

注意,很多地方写了可以使用IFormFile,直接写成


// POST: api/File
  [HttpPost]
  public Task<ActionResult> Post(IFormFile file)

实际测试没有办法获取到对象,file常态为null,或者是我方法不对。

然后就可以在post方法里面使用files.Files来枚举文件了,每个文件都是一个IFormFile对象,可以灵活使用FileName, Name,Length等常用属性。当然,我们也可以不带参数:


// POST: api/File
  [HttpPost]
  public Task<ActionResult> Post()

直接使用Request.Form.Files获得文件数据。

P.S. 对于IFormFile,与

System.IO.File
对象不同,IFormFile缺少很多方法,只提供
OpenReadStream()
方法,该方法返回一个stream对象。很多读文件的API都可以接受stream作为FilePath的替代。

同时上传其他数据

一般的文件上传请求,不单上传文件数据,通常还需要上传其他文件信息数据(比如文件类型,上传者等等)。修改一下post方法,改成这样:


 [HttpPost]
  public Task<ActionResult> Post([FromBody]string type,IFormCollection files)

将type都打包进请求,再次发送。发现......type是null。

MSDN说了,The reason for this rule is that the request body might be stored in a non-buffered stream that can only be read once.

所以,[FromBody]只能加一个,但是我这确实也只加了一个,有问题?很明显,那个IFormCollection也是默认通过[FromBody]解析的,所以正确的方法是不加[FromBody]了。


 [HttpPost]
  public Task<ActionResult> Post(string type,IFormCollection files)

后记

回想起当年做WebService的时候,上传文件写的
多平台上传
,感触颇多,以前是转码到base64,通过string发送,现在是直接类型识别...

到此这篇关于asp.net core webapi文件上传的文章就介绍到这了,更多相关asp.Net Core webapi文件上传内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

您可能感兴趣的文章:asp.net Core文件上传与下载实例(多种上传方式)asp.net core分块上传文件示例asp.net core mvc实现文件上传实例asp.net core实现文件上传功能


--结束END--

本文标题: asp.net core webapi文件上传功能的实现

本文链接: https://www.lsjlt.com/news/30785.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • asp.net core webapi文件上传功能的实现
    最近开发一个新项目,使用了asp.net core 2.0,采用webapi开发后台,postgresql为数据库。最先来的问题就是上传文件的问题。 POST文件的一些坑 使用...
    99+
    2022-06-07
    net ASP.NET webapi core ASP
  • ASP.NET实现文件上传功能
    本文实例为大家分享了ASP.NET实现文件上传功能的具体代码,供大家参考,具体内容如下 1、搭建网站结构 2、编写网页文件 创建一个Web窗体UploadFile和UpFile文件...
    99+
    2022-11-13
  • ASP.NET Core WebAPI实现本地化(单资源文件)
    在Startup ConfigureServices 注册本地化所需要的服务AddLocalization和 Configure<RequestLocalizationO...
    99+
    2022-06-07
    本地化 webapi core ASP net ASP.NET 源文件
  • Android4.4 WebAPI实现拍照上传功能
    网上有很多关于拍照上传的实现方法,如果用新版本android去运行有可能会发现根本实现不了。主要原因是android从4.4版本开始通过intent.ACTION_GET_CO...
    99+
    2022-06-06
    webapi Android
  • ASP.NET Core中怎么实现文件上传与下载
    这篇文章给大家介绍ASP.NET Core中怎么实现文件上传与下载,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1.使用模型绑定上传文件(官方例子)官方机器翻译的地址:https://docs.microsoft.co...
    99+
    2023-06-19
  • ASP.NET实现文件上传
    本文实例为大家分享了ASP.NET实现文件上传的具体代码,供大家参考,具体内容如下 .NET中C/S和B/S上传文件不同 B/S中文件上传和C/S中的文件上传性质完全不一样 在C/S...
    99+
    2022-11-13
  • asp.net中表单上传功能如何实现ajax文件异步上传
    这篇文章主要为大家展示了“asp.net中表单上传功能如何实现ajax文件异步上传”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“asp.net中表单上传功能如何...
    99+
    2022-10-19
  • asp.net core集成CKEditor实现图片上传功能的示例代码
    背景 本文为大家分享了asp.net core 如何集成CKEditor ,并实现图片上传功能的具体方法,供大家参考,具体内容如下。 准备工作 1.visual studio ...
    99+
    2022-06-07
    图片上传 net ASP.NET 示例 图片 ckeditor core ASP
  • Springboot文件上传功能的实现
    目录1.新建文件上传页面2.新建文件上传处理Controller类3.文件上传功能测试4.文件上传路径回显5.多文件上传功能实现6.文件名不同时的多文件上传处理1.新建文件上传页面 ...
    99+
    2023-05-15
    springboot文件上传 springboot文件上传方法
  • java实现文件的上传功能
    本文实例为大家分享了java实现文件的上传功能的具体代码,供大家参考,具体内容如下 直接上代码了 一、上传界面 <%@ page language="java" content...
    99+
    2022-11-13
  • AntDesignUpload文件上传功能的实现
    目录一、Ant Design Vue文件上传功能二、Ant Design React文件上传功能总结一、Ant Design Vue文件上传功能 1.文件上传选项框 <a-m...
    99+
    2023-05-17
    Ant Design Upload Upload文件上传功能 Ant Design Upload文件上传
  • springmvc实现文件上传功能
    一个简单的springmvc文件上传例子 所需的依赖 只需要这个就好了。在idea的依赖关系图中,commons-fileupload包含了commons-io依赖 <d...
    99+
    2022-11-11
  • SpringBoot实现文件上传功能
    经典的文件上传 服务器处理上传文件一般都是先在请求中读取文件信息,然后改变名称保存在服务器的临时路径下,最后保存到服务器磁盘中。本次以thymeleaf搭建demo,因此需要引入th...
    99+
    2022-11-12
  • JSP实现文件上传功能
    本文实例为大家分享了JSP实现文件上传功能的具体代码,供大家参考,具体内容如下 一、准备部分 需要fileupload.jar与io.jar包共同完成。构建完成路径后可继续。 资源地...
    99+
    2022-11-12
  • javaweb实现文件上传功能
    本文实例为大家分享了javaweb实现文件上传的具体代码,供大家参考,具体内容如下 1、创建一个空项目 2、新建一个web application 的Module 3、创建一个lib...
    99+
    2022-11-13
  • JavaWeb实现上传文件功能
    本文实例为大家分享了JavaWeb实现上传文件的具体代码,供大家参考,具体内容如下 这是需要使用到的两个jar包一定要导入到lib目录中,并添加到发布的lib目录下 index.j...
    99+
    2022-11-13
  • ajaxfileupload.js实现上传文件功能
    下面是一个使用ajaxfileupload.js实现文件上传功能的示例代码:首先,你需要引入ajaxfileupload.js文件,...
    99+
    2023-08-11
    功能
  • Jeeplus-vue 实现文件的上传功能
    前端 一、uploadList.vue ① 首先在页面中添加一个放置图片的位置,来展示图片 <el-table-column prop="upload" labe...
    99+
    2022-11-13
  • Java实现多文件上传功能
    文件上传是开发中十分常见的功能,在servlet3.0之前,实现文件上传需要使用一些插件技术,比如: commons-fileupload smartupload ...
    99+
    2022-11-12
  • SpringBoot+Vue3实现上传文件功能
    目录前言一、后端二、前端三、演示前言 开发后台系统时经常遇到实现上传文件的功能,在这记录一下我的方法 后端:SpringBoot2前端:Vue3+ElementPlus工具:IDEA...
    99+
    2023-01-28
    vue3 springboot 文件上传 vue3 springboot 上传
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作