簡體   English   中英

使用JavaScript進行服務器端文件系統訪問

[英]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 CLIaws-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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM