【发布时间】:2017-07-19 00:19:16
【问题描述】:
所以我们在前端得到一个文件(图像文件),如下所示:
//html
<input type="file" ng-change="onFileChange">
//javascript
$scope.onFileChange = function (e) {
e.preventDefault();
let file = e.target.files[0];
// I presume this is just a binary file
// I want to HTTP Post this file to a server
// without using form-data
};
我想知道的是 - 有没有办法将此文件发布到服务器,而不将文件包含为表单数据?问题是我发送 HTTP POST 请求的服务器在收到请求时并不真正知道如何存储表单数据。
我相信这是正确的做法,但我不确定。
fetch('www.example.net', { // Your POST endpoint
method: 'POST',
headers: {
"Content-Type": "image/jpeg"
},
body: e.target.files[0] // the file
})
.then(
response => response.json() // if the response is a JSON object
)
【问题讨论】:
-
为什么你不确定你的方法是否是“正确的方法”?是的,您应该可以将
POSTBlob或File实例发送到服务器 -
@AlexanderMills:但是你的服务器必须知道在接收到 image/jpeg 类型的 POST 请求时要做什么。你用的是什么服务器?
-
我们需要 HTTP POST/PUT 到 JFrog Artifactory 服务器 - 我最终使用我们的服务器作为 Artifactory 服务器的代理。我将添加一个答案,说明我们是如何做到的。也许有人可以看看我的答案并展示如何避免代理。