前端页面代码:
上传
$(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 modelWordPress 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表单的文件上传
...随机推荐
Day5-python基础之函数(二)
生成器 迭代器 装饰器 模块 来个需求,一个列表中所有元素都+1 1.最容易想到的方法 for循环,找列表索引,对应每个值+1 list_old = [1,2,3,4,5,6,7,8,9] for ...
继续Django
环境准备 1. 创建一个Django后,Django的目录: │ manage.py │ ├─Django_s1 │ settings.py │ urls.py │ wsgi.py │ __in ...
android 列表开发 ListView
1.android 端 二个entity consultInfo: private String name; private String id; consultInfoRef private iLi ...
com.transfer.www
package com.transfer.www; import java.io.IOException; import java.io.PrintWriter; import javax.servl ...
Codeforces Round #204 (Div. 2): B
很简单的一个题: 只需要将他们排一下序,然后判断一下就可以了! 代码: #include #include #define maxn 10 ...
[asp.net mvc 奇淫巧技] 04 - 你真的会用Action的模型绑定吗?
在QQ群或者一些程序的交流平台,经常会有人问:我怎么传一个数组在Action中接收.我传的数组为什么Action的model中接收不到.或者我在ajax的data中设置了一些数组,为什么后台还是接收不 ...
FFPLAY的原理(三)
播放声音 现在我们要来播放声音.SDL也为我们准备了输出声音的方法.函数SDL_OpenAudio()本身就是用来打开声音设备的.它使用一个叫做SDL_AudioSpec结构体作为参数,这个结构体中包 ...
ASP.NET WebApi服务接口如何防止重复请求实现HTTP幂等性
一.背景描述与课程介绍 明人不说暗话,跟着阿笨一起玩WebApi.在我们平时开发项目中可能会出现下面这些情况; 1).由于用户误操作,多次点击网页表单提交按钮.由于网速等原因造成页面卡顿,用户重复刷新 ...
cordova打包vue2(webpack)android、ios app
使用cordova打包vue2(webpack)app for android ios1.vue项目通过vue-cli脚手架建立项目,使用webpack进行打包,下边是一整套命令. #npm 版本最好 ...
[转]layDate显示默认时间