【问题标题】:How to Upload PhantomJS Page Content to S3如何将 PhantomJS 页面内容上传到 S3
【发布时间】:2014-05-03 01:40:48
【问题描述】:

我正在使用 PhantomJS 1.9.7 来抓取网页。我需要将返回的页面内容发送到 S3。我目前正在使用 PhantomJS 中包含的文件系统模块来保存到本地文件系统,并使用 php 脚本来扫描目录并将文件发送到 S3。我想完全绕过本地文件系统并将文件直接从 PhantomJS 发送到 S3。我在 PhantomJS 中找不到直接的方法。

我玩弄了使用 child_process 模块并将内容作为参数传递的想法,如下所示:

var execFile = require("child_process").execFile;
var page = require('webpage').create();
var content  = page.content;

execFile('php', '[path/to/script.php, content]', null, function(err,stdout,stdin){
   console.log("execFileSTDOUT:", JSON.stringify(stdout));
   console.log("execFileSTDERR:", JSON.stringify(stderr));
});

会直接调用一个php脚本来完成上传。这将需要使用额外的进程来调用 CLI 命令。我对运行另一个异步进程感到不舒服。我正在寻找一种将内容从 PhantomJS 脚本直接发送到 S3 的方法,类似于文件系统模块对本地文件系统所做的事情。

任何关于如何实现这一点的想法都将不胜感激。谢谢!

【问题讨论】:

    标签: amazon-s3 phantomjs


    【解决方案1】:

    您可以创建并打开另一个 page 并将其指向您的 S3 服务。 Amazon S3 有一个 REST API 和一个 SOAP API,而且 REST 似乎更容易。

    对于 SOAP,您必须手动构建请求。唯一的问题可能是错误的内容类型。虽然看起来好像是implemented,但我在文档中找不到参考。

    您还可以在页面上下文中创建一个form 并发送way 的文件。

    【讨论】:

    • 好主意!我还没有成功地实现它们,但它给了我一些尝试的东西。我还探索了Javascript-sdk,这是一个用于通过浏览器发送文件的专用 sdk。到目前为止,我在秘密访问密钥不匹配方面遇到了一些麻烦。再次感谢!
    猜你喜欢
    • 1970-01-01
    • 2014-08-22
    • 1970-01-01
    • 2018-08-31
    • 2017-08-27
    • 2012-04-25
    • 1970-01-01
    • 1970-01-01
    • 2012-02-11
    相关资源
    最近更新 更多