问题标签 [knox-amazon-s3-client]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - knox S3 上传损坏或截断的文件
这是一个脑筋急转弯问题,我实际上知道答案。我悬赏它,因为它代表了一个有价值的 Node 编程安全提示(这是第一个提示)。
- 提示 2:在 HTTP 请求中,“Content-Length”标头字段的单位是什么?
我在用着
结果上传被截断或以其他方式损坏。我们有stringVal.length === 322889
,并且生成的 S3 项目大小与之匹配。但是下载和重新加载文件会产生一个长度为的字符串322140
。在尝试 JSON.parse 字符串(可预测地)导致语法错误之前,不会出现任何错误。
这是怎么回事?
node.js - 使用强大的和(knox 或 aws-sdk)在 Node.js 上将文件流式上传到 S3
我正在尝试使用aws-sdk或knox将通过表单提交的文件直接上传到 Amazon S3 存储桶。表单处理是用强大的完成的。
我的问题是:如何使用这些库的最新功能来处理流,如何正确使用 aws-sdk(或 knox)的强大功能?
我知道这个话题已经在这里以不同的方式提出过,即:
- 如何使用 node.js 强大的库接收上传的文件并使用 knox 将其保存到 Amazon S3?
- node应用流文件直接上传到amazon s3
- 从节点强大的文件上传访问原始文件流(及其在覆盖 form.onPart() 上非常有用的公认答案)
但是,我认为答案有点过时和/或偏离主题(即 CORS 支持,由于各种原因我现在不想使用它)和/或最重要的是,没有提及来自的最新功能aws-sdk(参见:https ://github.com/aws/aws-sdk-js/issues/13#issuecomment-16085442 )或 knox(尤其是 putStream() 或其 readableStream.pipe(req) 变体,两者都解释了在文档中)。
经过几个小时的挣扎,我得出的结论是我需要一些帮助(免责声明:我是流的新手)。
HTML 表单:
Express bodyParser 中间件是这样配置的:
POST 请求处理程序:
但是,我收到以下错误:
{ [RequestTimeout:您与服务器的套接字连接未在超时期限内读取或写入。空闲连接将被关闭。]
消息:'您与服务器的套接字连接未在超时期限内读取或写入。空闲连接将被关闭。',代码:'RequestTimeout',名称:'RequestTimeout',状态码:400,可重试:false }
以这种方式定制的 handlePart() 函数的 knox 版本也惨遭失败:
我还在某处得到一个带有 400 statusCode 的大 res 对象。
在这两种情况下,区域都配置为eu-west-1。
补充笔记:
节点 0.10.12
来自 npm (1.0.14) 的最新强大功能
来自 npm (1.3.1) 的最新 aws-sdk
来自 npm 的最新 knox (0.8.3)
node.js - NodeJS 文件上传到 Amazon S3 存储映射到数据库
我在看Knox S3 库。在我的网络应用程序中,允许用户上传文件。我正在考虑使用 Amazon S3。
在 Knox 中,如何映射上传给用户的文件?假设我想知道用户上传的文件。这将存储在 MongoDB 中。
只是一个想法。
node.js - 对于 node.js,knox 和 AWS 开发工具包有什么区别?
...据我了解,他们做同样的事情:提供对亚马逊网络服务的访问。有人可以提供这两个库之间不同功能的列表吗?如果亚马逊已经提供了产品,为什么还存在 knox?
node.js - 错误:读取 ECONNRESET ExpressJS 和 Amazon S3
我在 ExpressJS Web 应用程序中使用 Knox S3 插件来显示在 Amazon S3 中上传的图像。显示图像时,有时会出现以下错误。我不知道错误。是什么导致了错误?
这就是我从 Amazon S3 渲染图像的方式:
node.js - Amazon S3 查询字符串身份验证取消下载?
我正在 NodeJS 中构建一个应用程序,它使用Knox S3 客户端将文件存储在 Amazon S3 中。一切都适用于上传文件,移动文件等。
现在我想使用查询字符串身份验证机制来允许直接下载文件。为此,我在 NodeJS 服务器上调用了一些代码来调用 Knox 库并创建一个签名的 url。
代码如下所示:
此代码返回带有身份验证参数的正确 URL。例如:
https://my-bucket.s3.amazonaws.com/some/folder/file.ext?Expires=1234567890&AWSAccessKeyId=ABCDEFGHIJKLMNO&Signature=someEncodedSignature
根据我读过的所有文件,这是一个正确的 URL。这个网址我没有从亚马逊收到任何错误。过期是正确的(我可以通过创建 1 秒的过期然后得到过期错误来验证这一点)。文件路径也正确。
但是,当我在浏览器中点击 url 时,我的浏览器(OSX 上的最新 Chrome)取消了文件的下载,即使我收到了200 ok
包含正确文件信息的响应。
这是来自 Chrome 开发工具的请求信息的副本(已替换敏感位):
如您所见,服务器响应为“200 ok”。content-length
341390 也是我尝试下载的文件的正确长度 - 这是实际文件大小。我将内容类型设置为“application/octet-stream”,因为这就是我告诉 S3 存储文件的方式......我只想要原始下载,基本上。
但在收到 S3 的此响应后,Chrome 会取消下载。这是来自 devtools 的屏幕截图,再次:
FireFox 和 Safari 都按预期下载文件。为什么chrome取消下载?我究竟做错了什么?是内容类型吗?或者 ?
node.js - 在 Knox 中为连接设置代理服务器
我正在使用 LearnBoost/knox 连接到 Amazon S3,但我的机器使用的是代理服务器。我已经设置了一个环境变量 http_proxy 和 https_proxy 但 Knox 没有使用它。如何让 Knox 通过代理服务器进行通信。
node.js - S3、签名 URL 和缓存
我正在使用 knox nodejs-library 在我的 webapp (nodejs) 上生成签名的 url。但是问题出现了,对于每个请求,我都需要为当前用户重新生成一个唯一的 GET 签名 url,从而将浏览器的缓存控制排除在游戏之外。
我已经在网上搜索但没有成功,因为浏览器似乎使用完整的 url 作为缓存键,所以我真的很好奇在给定的情况下(nodejs、knox 库)如何解决问题并使用缓存控制,同时仍然能够为每个请求生成签名的 url,因为我需要验证用户的访问权限。
我不敢相信没有解决方案。
node.js - npm knox 签名网址 http
我正在使用 nodejs npm 包“knox”连接到亚马逊 s3。我想创建一个下载网址。
目前我使用:
这会生成如下所示的 HTTPS URL:
是否可以获得http url?
我想在我的主页上显示图像,它们不需要 TLS 保护。