我正在尝试录制视频并上传到服务器。我可以创建视频,但上传无效。我能做错什么?我尝试直接从服务器下载文件(a.click())。它工作,但我无法上传到nodejs服务器
我能够发布文本值并从服务器获取我能够使用html中的表单上传从文件系统中选择的文件并传递直接选择的文件。下面
<form id="uploadForm"
enctype="multipart/form-data"
action="/upload"
method="post">
<input type="file" name="file" />
<input type="submit" value="Upload Image" name="submit">
<span id = "status"></span>
</form>
我也能用socket.io发送文件,如果是socket.emit(&#39; msg&#39;,文件)但是我不能在prod环境中使用socket。我愿意以任何其他方式将录制的文件发送到nodejs服务器
服务器代码
var express = require("express");
var multer = require('multer');
var app = express();
var fs = require('fs');
var storage = multer.diskStorage({
destination: function (req, file, callback) {
callback(null, './uploads');
},
filename: function (req, file, cb) {
var datetimestamp = Date.now();
cb(null, file.originalname + '-' + datetimestamp + '.' + file.originalname.split('.')[file.originalname.split('.').length -1])
}
});
var upload = multer({ storage : storage}).single('file');
app.get('/',function(req,res){
res.sendFile(__dirname + "/index.html");
});
app.post('/uploadlocal',function(req,res){
upload(req,res,function(err) {console.log(req.files);
console.log(req.body);
if(err) {
return res.end("Error uploading file.");
}
res.end("File is uploaded");
});
});
app.listen(3000,function(){
console.log("Working on port 3000");
});
&#13;
客户代码
function download() {
var blob = new Blob(recordedBlobs, {type: 'video/webm'});
var url = window.URL.createObjectURL(blob);
var files = {
video: {
type: 'video/webm',
dataURL: url
}
};
console.log('recording done');
var a = document.createElement('a');
a.style.display = 'none';
a.href = url;
a.download = 'test.webm';
document.body.appendChild(a);
a.click();
postclick(files);
setTimeout(function() {
document.body.removeChild(a);
window.URL.revokeObjectURL(url);
}, 100);
}
function postclick(data) {
var form = $('<form></form>');
form.attr("method", "post");
form.attr("action", '/uploadlocal');
var field = $('<input></input>');
field.attr("type", "text");
field.attr("name", 'file');
field.attr("value", data );
form.append(field);
$(document.body).append(form);
form.submit();
}
&#13;
答案 0 :(得分:0)
通过创建xmlhttprequest
解决了这个问题var formData = new FormData();
formData.append('file', blob, "test.webm");
var request = new XMLHttpRequest();
request.open("POST", "/upload");
request.send(formData);