2014-05-02 24 views
2

我使用PhantomJS 1.9.7來抓取網頁。我需要將返回的頁面內容發送到S3。我目前使用PhantomJS附帶的文件系統模塊保存到本地文件系統,並使用php腳本掃描目錄並將文件發送到S3。我想完全繞過本地文件系統並將文件直接從PhantomJS發送到S3。我無法在PhantomJS中找到直接的方法。如何將PhantomJS頁面內容上傳到S3

我玩弄使用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的方式,類似於文件系統模塊對本地文件系統的處理。

有關如何完成此任何想法,將不勝感激。謝謝!

回答

1

您可以創建並打開另一個page並將其指向您的S3服務。 Amazon S3有一個REST API和一個SOAP API,REST似乎更容易。對於SOAP,您將不得不手動構建請求。唯一的問題可能是錯誤的內容類型。雖然看起來好像是implemented,但我在文檔中找不到參考。

您也可以在頁面上下文中創建一個form併發送文件way

+0

好主意!我還沒有成功實施它們,但它給了我一些嘗試。我還探討了[Javascript-sdk](https://aws.amazon.com/sdkforbrowser/),它是一個通過瀏覽器發送文件的專用sdk。到目前爲止,我在祕密訪問密鑰不匹配時遇到了一些麻煩。再次感謝! – AYTWebSolutions