【发布时间】:2017-12-17 18:37:11
【问题描述】:
我有一个输入类型 = 文件的 html 表单,我有一个指向 API 的链接,用于将图像存储到云中。在此功能中,用户可以从他的本地计算机上传文件并将其上传到服务器。服务器返回上传图片的云地址。在邮递员中它工作正常,但是当与 jquery 一起使用时,我无法弄清楚如何做到这一点。在 postman 中设置了几个参数,例如文件名、标签和员工 ID。在文件名字段中有选择文件按钮和表单数据单选按钮。
到目前为止,这是我的 jquery 代码
$("#test-btn").on("click", function() {
$.ajax({
url: 'myURL/external/upload',
type: 'POST',
headers: {
"appID": "some value",
"version": "some value",
"empID": "some value",
"contentType": "application/x-www-form-urlencoded"
},
data: new FormData($("#test-form")),
processData: false,
contentType: false,
success: function() {
console.log(data)
},
error: function(e) {
console.log(e)
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form enctype="multipart/form-data" method="post" name="upload-image" id="test-form">
<input type="file" name="filename" />
<input type="text" name="tag" value="some value" />
<input type="text" name="empID" value="some value" />
</form>
<button id="test-btn">make</button>
我已将机密字段替换为虚拟值。
【问题讨论】:
-
尝试从标题中删除
"contentType" : "application/x-www-form-urlencoded"这一行 -
控制台有错误吗?
-
使用
data : new FormData($("#test-form")[0])或data : new FormData(document.getElementById('test-form')) -
控制台说:数据未定义。删除内容类型无效。在邮递员中,我们有一个包含键值对的主体参数。在第一个字段中有一个键:文件名和值:选择文件
标签: javascript jquery html ajax