gpt4 book ai didi

ajax - 不使用表单数据将二进制数据从浏览器发布到 JFrog/Artifactory 服务器

转载 作者:可可西里 更新时间:2023-11-01 17:27:05 24 4
gpt4 key购买 nike

所以我们在前端得到一个文件(一个图像文件)是这样的:

//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
)

最佳答案

您可以直接将文件附加到请求正文中。 Artifactory 不支持表单上传(和 it doesn't look like they plan to )

您仍然需要以某种方式代理请求以避免 CORS 问题,并且如果您使用的是用户凭据,则应谨慎对待它们。此外,您可以使用像 http-proxy-middleware 这样的库避免必须编写/测试/维护代理逻辑。

<input id="file-upload" type="file" />

<script>
function upload(data) {
var file = document.getElementById('file-upload').files[0];
var xhr = new XMLHttpRequest();
xhr.open('PUT', 'https://example.com/artifactory-proxy-avoiding-cors');
xhr.send(file);
}
</script>

关于ajax - 不使用表单数据将二进制数据从浏览器发布到 JFrog/Artifactory 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45179058/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com