Tag: knox amazon s3 client

从node.js报告上传进度

我正在编写一个小型的node.js应用程序,它从HTML表单接收多部分POST,并将传入的数据pipe理到Amazon S3。 强大的模块提供了多部分parsing ,将每个部分暴露为一个节点Stream 。 Knox模块将PUT处理为s3。 var form = new formidable.IncomingForm() , s3 = knox.createClient(conf); form.onPart = function(part) { var put = s3.putStream(part, filename, headers, handleResponse); put.on('progress', handleProgress); }; form.parse(req); 我正在通过socket.io向浏览器客户端报告上传进度,但是难以获取这些数字来反映节点向s3上传的真实进度。 当浏览器到节点上传几乎立即发生时,就像节点进程在本地networking上运行一样,进度指示器立即达到100%。 如果文件很大,例如300MB,进度指示器缓慢上升,但仍然比我们的上游带宽更快。 打到100%的进度后,客户端挂起,大概等待s3上传完成。 我知道putStream内部使用Node的stream.pipe方法,但我不明白这是如何真正的工作的细节。 我的假设是,节点尽可能快地吞噬传入的数据,并把它扔到内存中。 如果写入stream可以足够快地获取数据,那么很less的数据会一次存储在内存中,因为它可以被写入和丢弃。 如果写入stream很慢,那么我们可能必须将所有传入的数据保存在内存中,直到它可以被写入。 由于我们正在侦听读取stream上的data事件以便发送进度,因此我们最终报告上传速度比实际速度快。 我对这个问题的理解是否接近标准? 我该如何去解决它? 我是否需要记下来, write下来, drain和pause ?

使用强大的和(knox或aws-sdk)在Node.js上传文件到S3

我正尝试使用aws-sdk或knox将通过表单提交的文件直接上传到Amazon S3存储桶。 表格处理是强大的 。 我的问题是:如何正确使用aws-sdk(或knox)强大的处理stream使用这些库的最新function? 我知道这个话题已经在这里以不同的口味被提出来了, 如何使用node.js强大的库来接收上传的文件并使用knox将其保存到Amazon S3? 节点应用程序stream文件直接上传到亚马逊S3 从一个节点强大的file upload (以及它在overiding form.onPart()上非常有用的接受的答案) 访问原始文件stream 不过,我相信答案有点过时和/或偏离主题(即CORS的支持,目前我不想使用它,因为各种原因)和/或最重要的是,没有提到最新的function或者aws-sdk(参见: https : //github.com/aws/aws-sdk-js/issues/13#issuecomment-16085442 )或者knox(特别是putStream()或者其可读的stream标记(req)变体) 在文档中 )。 经过几个小时的挣扎之后,我得出结论,我需要一些帮助(免责声明:我是一个相当新鲜的stream)。 HTML表单: <form action="/uploadPicture" method="post" enctype="multipart/form-data"> <input name="picture" type="file" accept="image/*"> <input type="submit"> </form> Express bodyParser中间件是这样configuration的: app.use(express.bodyParser({defer: true})) POST请求处理程序: uploadPicture = (req, res, next) -> form = new formidable.IncomingForm() form.parse(req) form.onPart = (part) -> if […]

javascript node.js中的自动mimetypes

我正在JavaScript中上传文件到aws s3,AFAIK他们都需要一个mimetype才能正常工作。 有没有一个脚本可以自动映射文件名到我可以使用的mimetypes? 编辑:如果有一种方法,亚马逊自动处理mimetypes会更好。