我有一个帆应用程序。所以在后端我有节点js服务器,在前端我有一个角度js应用程序。
从前端我想将一些文件上传到s3。因此,我在后端使用s3-skipper。
所以在我的前端
<form id="formUpload"
method = "post"
action = "/bin/upload"
enctype= "multipart/form-data" >
<input type="file" id="inFile" name="file" />
<input type="button" value="Upload" onclick="uploadFile();" />
</form>
然后使用skipper在s3中上传文件我正在后端访问文件流:
req.file("file");
整个过程完美无缺。 现在我还有另一个场景,当我从浏览器录制音频文件时,我想使用相同的s3-skipper将文件上传到s3。
但在这种情况下,由于显而易见的原因,我没有任何html表单元素和输入类型文件。对于音频文件我是base64 audio dataUrl:
data:audio/ogg;base64,T2dnUwACAAAAAAAAAABx+oohAAAAAH....
由于我无法使用表单提交,我想使用$ http发送数据。那我在做什么: -
var blob = $scope.dataURItoBlob(audioDataUrl, 'audio/ogg');
var formData = new FormData();
formData.append('file', blob);
$http({
method: 'POST',
url: '/file/upload/multi',
headers: { 'Content-Type': 'multipart/form-data;' },
data: formData
发送请求后,我可以看到一些数据正在浏览器网络中发送。
但是在后端这是我得到的req.file(“file”):
{ _fatalErrors: [],
isNoop: true,
_files: [],....
那么,有人可以帮我这里如何正确上传文件吗?