同时上传参数及图片到 Web Api
方法一:利用 FormData
JS:
function uploadFileAndParam() {
var url = "http://localhost:42561/api/upload/UploadPost";
/*
FormData 对象就是模拟一个Form表单格式的数据,以二进制的方式提交,等同于 Form 表单 设置 enctype="multipart/form-data".
由于 ajax 请求默认 contentType:"application/x-www-form-urlencoded" (这也是 Form 表单 enctype 的默认值)
所以需要设置
contentType: false
processData: false
*/
var data = new FormData($("#myForm")[0]);//参数是JS对象,而 $("#myForm") 是JQ对象,并且是数组,所以需要加[0]
data.append("sex", 1);//追加数据
data.delete("name");//删除数据
var id = data.get("id");//获取数据
//还有 has(),getAll(),forEach() 等方法. $.ajax({
url: url,
data: data,
type: "post",
cache: false,//不缓存,暂时不明白为什么 FormData 对象提交,都要设置这个
contentType: false,//告诉JQ, 不要设置 ContentType 请求头
processData: false,//告诉JQ, 不要处理发送的数据
success: function () { }
});
}
HTML:
<div>
<span>测试同时Post参数及文件</span><br />
<form action="http://localhost:42561/api/upload/UploadPost" method="post" id="myForm">
<input type="text" name="id" value="11" />
<input type="text" name="name" value="中1&1文" />
<input type="text" name="age" value="22" />
<input type="file" name="myFile" />
<input type="submit" value="submit提交" />
<input type="button" value="button提交" onclick="uploadFileAndParam()" />
</form>
</div>
方法二:原生Form表单提交
<form id="myForm6" enctype="multipart/form-data" method="post" action="http://*****">
<input type="text" name="id" value="35" />
<input type="text" name="name" value="wjire" />
<input type="file" name="myFile" />
<input type="submit" value="submit提交" />
</form>
后台 Web Api 接收
public async Task<HttpResponseMessage> UploadPost() {
var request = HttpContext.Current.Request;
var id = request.Form["id"];
var name = request.Form["name"];
var age = request.Form["age"];
var files = HttpContext.Current.Request.Files;
var path = HttpContext.Current.Server.MapPath("/img/");
if (files.Count > ) {
foreach (string file in files) {
var img = files[file];
if (img?.ContentLength > ) {
var fileName = img.FileName;
await Task.Run(() => img.SaveAs(path + fileName));
}
}
return new HttpResponseMessage(HttpStatusCode.OK)
{
Content = new StringContent("成功@!!!!!")
};
} else {
var stream = request.InputStream;
if (stream.Length > ) {
var bytes = new byte[stream.Length];
stream.Read(bytes, , bytes.Length);
}
}
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, "没有文件");
}
同时上传参数及图片到 Web Api的更多相关文章
- web service上传参数代码实例
web service上传参数代码实例 这次做的项目用到webservice比较多,最开始在网上看的参考dome,发现都不行,后来发现安卓4.0以后有很大的不同,在做传参时,有些东西需要注意: 第一, ...
- 解决Web Uploader上传文件和图片 延迟和not defined
1.出现list not define时,var $list = $("#fileList"); 2.选择文件框有延迟,可能是因为选择文件类型过多 mimeTypes: 'imag ...
- android选择图片或拍照图片上传到服务器(包括上传参数)
From:http://blog.csdn.net/springsky_/article/details/8213898具体上传代码: 1.选择图片和上传界面,包括上传完成和异常的回调监听 [java ...
- dropzonejs中文翻译手册 DropzoneJS是一个提供文件拖拽上传并且提供图片预览的开源类库.
http://wxb.github.io/dropzonejs.com.zh-CN/dropzonezh-CN/ 由于项目需要,完成一个web的图片拖拽上传,也就顺便学习和了解了一下前端的比较新的技术 ...
- 使用FormData上传文件、图片
关于FormData XMLHttpRequest Level 2添加了一个新的接口 ---- FormData 利用FormData对象,可以通过js用一些键值对来模拟一系列表单控件,可以使用XM ...
- Struts2图片文件上传,判断图片格式和图片大小
1. 配置Struts2能够上传的最大文件大小 使用Struts2进行文件上传的时候,Struts2默认文件大小最大为2MB,如果要传大一点的文件,就需要修改struts.xml配置文件,重新设置能够 ...
- MVC使用JCrop上传、裁剪图片
JCrop用来裁剪图片,本篇想体验的是: 在视图页上传图片: 上传成功,跳转到另外一个编辑视图页,使用JCrop对该图片裁剪,并保存图片到指定文件夹: 裁剪成功后,在主视图页显示裁剪图片: 当然,实际 ...
- 异步上传&预览图片-不压缩图片
本例使用ajaxFileUpload异步上传预览图片 <bean id="multipartResolver" class="org.springframework ...
- html5 图片上传,支持图片预览、压缩、及进度显示,兼容IE6+及标准浏览器
以前写过上传组件,见 打造 html5 文件上传组件,实现进度显示及拖拽上传,兼容IE6+及其它标准浏览器,对付一般的上传没有问题,不过如果是上传图片,且需要预览的话,就力有不逮了,趁着闲暇时间,给上 ...
随机推荐
- c语言在windows下和Mac下的不同表现!
最近给一个等级考试的C语言培训班上课,学生问起一些++的问题.让我好生为难.因为这些不同的编译器处理方式,在不同的系统下表现并不一致. 不管你洋洋洒洒论述多么一大篇,在事实面前就一下显得苍白了.虽然这 ...
- B树、B-树、B+树、B*树 红黑树
转载自:http://blog.csdn.net/quitepig/article/details/8041308 B树 即二叉搜索树: 1.所有非叶子结点至多拥有两个儿子(Left和Right): ...
- Python全栈工程师(字符串/序列)
ParisGabriel Python 入门基础 字符串:str用来记录文本信息字符串的表示方式:在非注释中凡是用引号括起来的部分都是字符串‘’ 单引号“” 双引号''' ''' ...
- HA集群基本概念详解
一.高可用集群的定义 二.高可用集群的衡量标准 三.高可用集群的层次结构 四.高可用集群的分类 五.高可用集群常用软件 六.共享存储 七.集群文件系统与集群LVM 八.高可用集群的工作原理 一.高可用 ...
- Ironic-Python-Agent
Ironic-Python-Agent 在PXE部署环境中,deploy模块是通过打开一个iSCSI设备,ironic-conductro将OS的镜像文件写到iSCSI的设备,所以deploy_ram ...
- C#后端调用前端的方法
在我实际开发过程中,刚好遇到c#后端要调用前端js中的方法,所以研究了一下,特分享如下: 前端代码: <%@ Page Language="C#" AutoEventWire ...
- 【bzoj2306】[Ctsc2011]幸福路径 倍增Floyd
题目描述 一张n个点的有向图,每个点有一个权值.一开始从点$v_0$出发沿图中的边任意移动,移动到路径上的第$i$个点 输入 每一行中两个数之间用一个空格隔开. 输入文件第一行包含两个正整数 n, ...
- C++11 tuple元组
C++11 tuple 元组 tuple容器(元组), 是表示元组容器, 是不包含任何结构的,快速而低质(粗制滥造, quick and dirty)的, 可以用于函数返回多个返回值; tuple容器 ...
- 【距离GDOI:128天】【POJ2778】DNA Sequence(AC自动机+矩阵加速)
已经128天了?怎么觉得上次倒计时150天的日子还很近啊 ....好吧为了把AC自动机搞透我也是蛮拼的..把1030和这道题对比了无数遍...最终结论是...无视时间复杂度,1030可以用这种写法解. ...
- AB序列 凹函数的性质
链接:https://www.nowcoder.com/acm/contest/113/B来源:牛客网 题目描述 给长度为n的序列A,长度为m的序列B.可以给A序列里每个元素加上x且B序列里每个元素减 ...