我有一个风帆应用程序。所以在后端我有节点 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 音频 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: [],....
那么,任何人都可以在这里帮助我如何正确上传文件吗?