javascript - 如何通过 XMLhttprequest 和多部分/表单正文内容发送视频?视频未发送?
问题描述
我有一个网页,我试图允许通过 XMLhttprequest 将视频发送到我的 API,如下所示:
<form onsubmit="submitBtn()">
<input type="file" accept="video/*" name="fileupload" value="fileupload" id="fileupload">
<label for="fileupload"> Select a file to upload
</label>
<input type="submit" value="submit">
</form>
<script language="javascript" type="text/javascript">
function submitBtn() {
var search = document.getElementById('fileupload').value;
if (search.length>0){
var text = search;
userAction(text);
}
}
</script>
<script language="javascript" type="text/javascript">
function userAction(res) {
var formData = new FormData();
formData.append("video", res);
var request = new XMLHttpRequest();
var api = 'myApi'
request.open('POST', api, true);
request.onload = function () {
// Begin accessing JSON data here
var data = this.response;
if (request.status >= 200 && request.status < 400) {
console.log('celebrate');
} else {
console.log('error');
}
}
request.send(formData);
}
</script>
这部分似乎工作正常,但是,我不相信视频本身会发送到我的 API。如果我context.log(result.body)
得到类似的东西:
------WebKitFormBoundary1234
Content-Disposition: form-data; name="video"
C:\fakepath\videoname.mp4
------WebKitFormBoundaryq1234--
然后我希望将此视频作为多部分/表单正文内容发送到另一个 API。
我已经尝试过使用:
function videoAPI (context, auth, vid, callback){
var body = vid;
var requestUrl = urlApi;
const requestOptions = {
hostname: requestUrl.hostname,
path: requestUrl.path,
method: 'POST',
headers: {
'Content-Type': 'multipart/form-data',
}
};
var request = https.request(requestOptions, function(res) {
var data = "";
res.on('data', function (chunk) {
context.log('Response: ' + chunk);
data += chunk;
});
res.on('end', function () {
var jsonData = JSON.parse(data);
callback(jsonData);
});
})
request.write(body);
request.end();
}
同样,这个功能,但是,我得到的响应是:
Input is invalid. Input must specify either a video url, an asset id or provide a multipart content body
这似乎表明我没有正确发送视频,或者我没有通过 XMLhttprequest 正确发送视频。
有人可以强调我出错的地方以及如何纠正它吗?
我正在使用 nodejs 和 Azure。
解决方案
推荐阅读
- flutter - HERE api 地图样式,如何从地图中删除所有对象?
- excel - 下标超出范围的调试错误(错误 9)
- asp.net - ASP.net MVC 防止某些下一个计算值的重复
- linux - 如何更改 csv.bz2 中的日期格式列并在 Unix 中更新文件
- azure-devops - Azure 管道检测构建已运行多次
- javascript - 将文本添加到 DOM 元素而不导致重排以获得“渲染文本”
- c - 有没有办法不将 seccomp 过滤器继承给子进程?
- html - Bootstrap响应式文本对齐不起作用
- flutter - FlutterError:列表
不是 Map 类型的子类型 - cpu-architecture - gem5中load指令的执行过程