Webapi文件上传
1/ multipart/form-data方式
using Abp.UI;
using Abp.Web.Models;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Threading.Tasks;
using System.Web.Http; namespace OwnerSayCar.Web.ApiControllers
{
[RoutePrefix("api/upload")]
public class UploadController : ApiController
{
[DontWrapResult]
[Route("img"), HttpPost]
public async Task ImgFromDataUploadAsync()
{
if (!Request.Content.IsMimeMultipartContent())
throw new UserFriendlyException("上传格式不是multipart/form-data"); string UploadImgType = !string.IsNullOrWhiteSpace(ConfigurationManager.AppSettings.Get("UploadImgType")) ?
ConfigurationManager.AppSettings.Get("UploadImgType") : "jpg,png,gif";
string UploadSaveImgPath = !string.IsNullOrWhiteSpace(ConfigurationManager.AppSettings.Get("UploadSaveImgPath")) ?
ConfigurationManager.AppSettings.Get("UploadSaveImgPath") : "/Resource/Images";
int.TryParse(ConfigurationManager.AppSettings.Get("UploadImgMaxByte"), out int UploadImgMaxByte);
UploadImgMaxByte = UploadImgMaxByte > ? UploadImgMaxByte : ; //创建保存上传文件的物理路径
var root = System.Web.Hosting.HostingEnvironment.MapPath(UploadSaveImgPath); //如果路径不存在,创建路径
if (!Directory.Exists(root)) Directory.CreateDirectory(root); var provider = new MultipartFormDataStreamProvider(root); //读取 MIME 多部分消息中的所有正文部分,并生成一组 HttpContent 实例作为结果
await Request.Content.ReadAsMultipartAsync(provider); foreach (var file in provider.FileData)
{
//获取上传文件名 这里获取含有双引号'" '
string fileName = file.Headers.ContentDisposition.FileName.Trim('"');
//获取上传文件后缀名
string fileExt = fileName.Substring(fileName.LastIndexOf('.')); FileInfo fileInfo = new FileInfo(file.LocalFileName); if (fileInfo.Length > && fileInfo.Length <= UploadImgMaxByte)
{
if (String.IsNullOrEmpty(fileExt) || Array.IndexOf(UploadImgType.Split(','), fileExt.Substring().ToLower()) == -)
{
fileInfo.Delete();
throw new UserFriendlyException("上传的文件格式不支持");
}
else
{
//string newFileName = fileInfo.Name + fileExt;
string newFileName = Guid.NewGuid().ToString() + fileExt;
//最后保存文件路径
string saveUrl = Path.Combine(root, newFileName);
fileInfo.MoveTo(saveUrl);
}
}
else
{
fileInfo.Delete();
throw new UserFriendlyException("上传文件的大小不符合");
}
}
}
}
}
Error:
Error reading MIME multipart body part
解决方法:
web.config: <system.web>
<!--设置允许请求的长度,比如设置为1GB-->
<httpRuntime targetFramework="4.5.1" maxRequestLength="" />
</system.web>
Webapi文件上传的更多相关文章
- asp.net core webapi文件上传
最近开发一个新项目,使用了asp.net core 2.0,采用webapi开发后台,postgresql为数据库.最先来的问题就是上传文件的问题. POST文件的一些坑 使用默认模板创建webapi ...
- webapi文件上传和下载
文件上传我们可以做上传文件保存到图片与导入数据,下载可以下载多样的文件. 上传:实例是单个文件导入 NopiHelper:地址 ①简单的上传图片进行保存,方法跟MVC中的一样 <form nam ...
- .net core webapi 文件上传在 Swagger 文档中的有好提示处理
前提: 需要nuget Swashbuckle.AspNetCore 我暂时用的是 4.01 最新版本: 描述:解决 .net core webapi 上传文件使用的是 IFormFile,在S ...
- webAPI文件上传时文件过大404错误的问题
背景:最近公司有个需求,外网希望自动保存数据到内网,内网有2台服务器可以相互访问,其中一台服务器外网可以访问,于是想在 这台服务器上放个中转的接口.后来做出来以后测试发现没有问题就放线上去了,不顾发现 ...
- WebApi 文件上传
1. 注意给form表单加上enctype = "multipart/form-data" 属性,否则会导致Action的参数HttpPostedFileBase 对象接收不到文件 ...
- HTML5+AJAX+WEBAPI 文件上传
总体的思路是把文件转换成base64字符串传递给后台,然后再把base64字符串转换成二进制,转成文件. <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTM ...
- WebAPI文件上传与下载
http://www.cnblogs.com/GarsonZhang/p/5511427.html https://github.com/GarsonZhang/FileUpLoadAPI
- httpPostedFile实现WEBAPI文件上传
public void PostUpload() { var httpPostedFile = HttpContext.Current.Request.Files; foreach(string p ...
- C# Http文件上传下载
C# Http文件下载公共类(支持断点续传) http://www.cnblogs.com/hayden/archive/2012/04/26/2472815.html C# Http方式下载文件到本 ...
随机推荐
- git舍弃文件更改
未进行任何提交,即文件更改在工作区 # filename 对应进行操作的文件名 git checkout -- filename 已用git add 命令提交,即文件更改在暂存区 # 舍弃暂存区的修改 ...
- 得到一个Object的属性
private static object GetPropertyValue(object obj, string property) { System.Reflection.PropertyInfo ...
- OneZero第三周第二次站立会议(2016.4.5)
1. 时间: 13:00--13:15 共计15分钟. 2. 成员: X 夏一鸣 * 组长 (博客:http://www.cnblogs.com/xiaym896/), G 郭又铭 (博客:http ...
- 【C#】详解C#委托
目录结构: contents structure [+] 委托语法 泛型委托 委托链 lambda表达式 揭秘委托 类库中的委托 委托和反射 1.委托语法 本文会详细阐述委托的使用,以及实现,想必读者 ...
- 牛客训练六:海啸(二维树状数组+vector函数的使用)
题目链接:传送门 思路: 二维树状数组, vector(first,last)函数中assign函数相当于将first中的函数清空,然后将last中的值赋值给first. 参考文章:传送门 #incl ...
- CentOS 7 / RHEL 7 运行单用户模式进行root的密码重置
步骤一,开机时随便按下键盘,进入以下菜单 步骤二: 选择第一项,按e键进行修改 步骤三,定位到 ro( linux 16 or linuxefi ) 步骤四:把ro改成 “rw init=/sys ...
- s4-2 ALOHA 协议
多路访问协议 随机访问协议(Random Access) 特点:站点争用信道,可能出现站点之间的冲突 典型的随机访问协议 • ALOHA协议 • CSMA协议 • CSMA/CD协议(以太网采 ...
- php 获取当前在线用户数量
<?php //在线人数统计 $filename='online.txt';//数据文件 $cookiename='VGOTCN_OnLineCount';//cookie名称 $onlinet ...
- 多表更新时碰到的 ERROR 1292 (22007)隐式转换错误
表结构如下: Create Table: CREATE TABLE `test_t2` ( `id` int(11) NOT NULL AUTO_INCREMENT, `customer_no` va ...
- 2.2.5synchronized代码间的同步性
package com.cky.bean; /** * Created by chenkaiyang on 2017/12/6. */ public class ObjectService { pub ...