使用节点js的S3文件上传文件对象

时间:2016-05-13 14:16:33

标签: javascript angularjs node.js amazon-web-services amazon-s3

我使用Sailsjs 0.12.1,node.js 4.2.6

我想从前端(angular.js)通过API和后端上传文件我想将文件上传到AWS S3存储桶。

前端我将文件发送到api。在后端,我收到了名称的文件,但在将文件上传到S3时我收到了错误

  

无法确定[object Object]的长度

我谷歌错误并找到了许多链接,但运气不好。

后端

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script src="http://code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
<script src="//cdn.jsdelivr.net/jquery.slick/1.6.0/slick.min.js"></script>

<div class="slider">
        <div>

            <img src="http://kenwheeler.github.io/slick/img/fonz1.png" alt="">
            <!-- <img data-lazy="img/1.jpg" /> -->
            <div class="slide-text">Text for slide 1</div>
        </div>

        <div>
            <!-- <img data-lazy="img/3.jpg" /> -->
            <img src="http://kenwheeler.github.io/slick/img/fonz3.png" alt="">
            <div class="slide-text">Text for slide 2</div>
        </div>
        <div>
            <!-- <img data-lazy="img/4.jpg" /> -->
            <img src="http://kenwheeler.github.io/slick/img/fonz2.png" alt="">
            <div class="slide-text">Text for slide 3</div>
        </div>
    </div>
  

我的方法是否正确

     

如果是的话,我做错了什么。

我想知道如何使用文件对象上传文件 我可以创建一个读取流但是我没有文件路径当我创建文件对象时我得到错误:路径必须是一个字符串

1 个答案:

答案 0 :(得分:0)

您可以查看有关流数据的following example Amazon S3:上传任意大小的流(上传)

var fs = require('fs');
var zlib = require('zlib');

var body = fs.createReadStream('bigfile').pipe(zlib.createGzip());
var s3obj = new AWS.S3({params: {Bucket: 'myBucket', Key: 'myKey'}});
s3obj.upload({Body: body}).
  on('httpUploadProgress', function(evt) { console.log(evt); }).
  send(function(err, data) { console.log(err, data) });