2

我有一个风帆应用程序。所以在后端我有节点 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: [],....

那么,任何人都可以在这里帮助我如何正确上传文件吗?

4

0 回答 0