[英]Server-Side FileSystem Access with JavaScript
我在Amazon S3上托管一個靜態網站。 在我的存儲桶中,還存儲了一些.txt,.pdf和.svg文件。 我想用javascript在我的html網站上顯示這些文件的列表(只命名沒有內容)。 由於用戶可以將文件上傳到存儲桶,因此名稱總是會更改。 這就是為什么我要列出它們。 而且我不想列出所有文件,而不是顯示html文件,而是顯示帶有表的html文件,該表列出了存儲桶中特定文件夾中的文件。
我不只將nodejs用作瀏覽器的js。 我嘗試不使用任何新模塊。 該項目應保持簡單。
我已經閱讀了有關在browserify的幫助下在瀏覽器中使用諸如'fs'之類的nodejs模塊的教程。 我沒有解決這個問題,也沒有發現其他想法。
我閱讀了有關FileSystemDirectoryReader for js的內容,但目前尚不普遍支持。 WebKitFileSystem是否可以滿足我的需求? 我知道大多數fileSystem API都使用virtuall目錄,而不是我需要的目錄。
現在我想知道我是否真的需要npm模塊之類的東西,因為我不想訪問客戶端文件系統,而是要訪問S3上的我自己的文件系統。 我已經使用XMLHttpRequest從這些文件中讀取了數據,但是我也可以只列出名稱嗎?
如果我有這樣的代碼,那就太好了:var arrFiles = []; arrFiles = readFiles(“ ./ files / *”);
另一種方法是使用AWS Lambda讀取所有文件名,將它們保存為列表在文本文件中,然后使用js讀取該文件以在網站上打印名稱。 似乎很復雜。
如果那有意義的話。 提前致謝
借助AWS, AWS Mobile CLI和aws-amplify成為可能。 他們是有很大的documentationa和示例網站
基本上,您將創建aws移動集線器,配置您的S3 bucket,cognito,dynamodb以及所需的其他任何aws服務。
首先使用Node js安裝AWS Mobile CLI
npm install -g awsmobile-cli
配置它。
awsmobile configure
初始化您的項目
awsmobile init
在您的項目中安裝aws-amplify
節點軟件包一次
npm i install aws-amplify
導入必要的模塊並進行配置。
import Amplify, { Storage } from 'aws-amplify';
import aws_exports from './aws-exports';
Amplify.configure(aws_exports);
最后只需調用List
函數,它將在指定路徑下列出鍵。
Storage.list('photos/')
.then(result => console.log(result))
.catch(err => console.log(err));
您可以執行多種功能,例如上載,下載和刪除。 它們由AWS團隊維護和支持,不僅限於S3。
它們與Angular和react js都兼容。
現在,我使用lambda函數生成了表內容。
在該lambda函數中,我使用aws.s3類和listObjectsV2()。 它讀取特定文件夾中的所有數據。 我將所有找到的文件的名稱寫到存儲在存儲桶中的文本文件中。
每次頁面重新加載時,js文件都使用XMLHttp Request讀取該文本文件。 這樣它就可以獲取bucket文件夾的內容,並且可以將名稱寫入表中。 當我返回顯示該表的網站主頁時,總是觸發lambda函數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.