webapi实现AJAX多文件上传,WebApi实现Ajax模拟Multipart/form-data方式多文件上传

前端页面代码:

上传

$(document).ready(function () {

$("#btnUpload").click(function () {

var formdata = new FormData();

var files = $(".file_control");

$.each(files, function (index, domEle) {

formdata.append("file" + index, domEle.files[0]);

});

$.ajax({

url: '/api/Service/UpLoad',

type: 'POST',

cache: false,

data: formdata,

processData: false,

contentType: false,

success: function (data) {

alert(data.success);

},

error: function () {

alert("error");

}

}).done(function (res) {

}).fail(function (res) {

});

});

后端代码:

///

/// 文件上传

///

///

///

[HttpPost]

[Route("api/Service/UpLoad")]

public Task UpLoad(HttpRequestMessage request)

{

if (!request.Content.IsMimeMultipartContent())

throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);

if (!ModelState.IsValid)

throw new HttpResponseException(HttpStatusCode.BadRequest);

string root = AppDomain.CurrentDomain.BaseDirectory + @"UploadFiles";

if (!Directory.Exists(root))

Directory.CreateDirectory(root);

MultipartFormDataStreamProvider provider = new MultipartFormDataStreamProvider(root);

var task = request.Content.ReadAsMultipartAsync(provider).ContinueWith(t =>

{

if (t.IsFaulted || t.IsCanceled)

return request.CreateErrorResponse(HttpStatusCode.InternalServerError, t.Exception);

HttpResponseMessage response = null;

string filePath = root + @"\" + DateTime.Now.ToString("yyyyMMdd");

if (!Directory.Exists(filePath))

Directory.CreateDirectory(filePath);

foreach (var file in provider.FileData)

{

string fileName = file.Headers.ContentDisposition.FileName;

if (Regex.IsMatch(fileName, @"^"".*""$"))

fileName = fileName.Trim('"');

if (Regex.IsMatch(fileName, @"[\\/]+"))

fileName = Path.GetFileName(fileName);

string extName = Path.GetExtension(fileName);

string tempName = DateTime.Now.Ticks.ToString() + extName;

File.Copy(file.LocalFileName, Path.Combine(filePath, tempName));

if (File.Exists(file.LocalFileName))

File.Delete(file.LocalFileName);

// 转存阿里OSS、七牛云、腾讯云COS

response = request.CreateResponse(HttpStatusCode.OK, new { success = true });

}

return response;

});

return task;

}

*注:如果报IsFaulted=true的错误,基本上是因为你没给input起name造成的。

ajax+php (jquery.form插件)实现异步文件上传

upload model

WordPress Contact Form 7插件任意文件上传漏洞

漏洞名称: WordPress Contact Form 7插件任意文件上传漏洞 CNNVD编号: CNNVD-201311-415 发布时间: 2013-11-28 更新时间: 2013-11-28 ...

ANDROID使用MULTIPARTENTITYBUILDER实现类似FORM表单提交方式的文件上传

最近在做 Android 端文件上传,要求采用 form 表单的方式提交,项目使用的 afinal 框架有文件上传功能,但是始终无法与php写的服务端对接上,无法上传成功.读源码发现:afinal 使 ...

使用Anthem.NET 1.5中的FileUpload控件实现Ajax方式的文件上传

Anthem.NET刚刚发布了其最新的1.5版本,其中很不错的一个新功能就是对文件上传功能的Ajax实现.本文将简要介绍一下该功能的使用方法. Anthem.NET的下载与安装 Anthem.NET可 ...

jquery ajax file upload NET MVC 无刷新文件上传

网上有各种各样的文件上传方法,有基于JS框架的.也有基于flash swf插件的. 这次分享一个比较简单而且实用能快速上手的文件上传方法,主要步骤: 1.引用Jquery包,我用的是jquery-1. ...

C#模拟请求,模拟登录,Cookie设置、文件上传等问题汇总

由于业务需求,最近需要模拟完成登陆某个网站,并上传所需要的文件.在开发途中,遇到了很多问题,现在,就我遇到的一些问题及解决办法说明如下,希望对遇到同样问题的人有所帮助.因为技术有限,可能有些内容并不完 ...

SpringMVC注解方式与文件上传

目录: springmvc的注解方式 文件上传(上传图片,并显示) 一.注解 在类前面加上@Controller 表示该类是一个控制器在方法handleRequest 前面加上 @RequestMap ...

php+form表单的文件上传

...

随机推荐

解决:Redis:java.util.NoSuchElementException: Unable to validate object at

在Java使用Redis的过程中遇见了一个问题, redis.clients.jedis.exceptions.JedisConnectionException: Could not get a re ...

XCode设置(怎么让代码收缩)

有时候刚使用一台电脑 可能会没有代码收缩的功能. 在哪里设置呢?看图 打开xcode 的 偏好设置 找到textEditing 把Code folding勾选上 就可以了

wifi使用的一些误区

下面是使用过程中的一些常用的误区: 家里买了三个路由器,信道都设置成同一个,这样会比较好. 买多个路由器的时候,一个人用的时候还好,多个人用的时候就会出问题. 多个设备在同样信道的时候会产生干扰.建议 ...

使用Javascript获取当前目录的绝对路径

转自http://heeroluo.net/Article/Detail/101 一谈到路径相关的问题,大家都会往window.location上想,确实这个对象提供了相当多的路径信息,其中常用的就包 ...

linux下查看进程id时用到的命令

一.查看端口占用的进程 . lsof -i:端口号, 查看某一端口的占用情况 [root@localhost bin]# lsof -i: COMMAND PID USER FD TYPE DEVIC ...

ansible--我的几个报错

我的几个报错: 1.远程复制失败 [root@localhost ~ ]#scp -r .ssh 192.168.10.145:/root/ root@192.168.10.145's passwor ...

Alpha冲刺报告(3/12)(麻瓜制造者)

今日已完成情况: 肖小强: 解决了之前的部署demo问题,学习了基本需要的api 江郑: 进行发布需求数据库的增删改查 邓弘立: 完成了轮播图的设计 刘双玉: 编码发布商品的接口,数据库表的修改 汪志 ...

纯CSS绘制三角形(各种角度)类似于使用字符画法,根据位移不同,也可以使用两个元素画出三角边框

我们的网页因为 CSS 而呈现千变万化的风格.这一看似简单的样式语言在使用中非常灵活,只要你发挥创意就能实现很多比人想象不到的效果.特别是随着 CSS3 的广泛使用,更多新奇的 CSS 作品涌现出来. ...

oracle的dmp数据文件的导出和导入以及创建用户

关于dmp文件我们用的还是比较多的,dmp文件它是作为oracle导入和导出表使用的文件格式,今天就将dmp文件导出和导入进行学习. dmp文件导出 dmp文件导出用的比较多的一般是三种,他们分别是: ...

js方法call和apply实例解析

在js编程中实现继承时 用到了两个很特殊的方法,call和apply. 在ECMAScript v3中,给Function原型定义了这两个方法,这两个方法的作用都是一样的:使用这两个方法可以像调用其他 ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值