Hướng dẫn download file from s3 javascript - tải xuống tệp từ javascript s3

Tôi đến đây để tìm cách tải xuống một tệp S3 ở phía máy khách. Đây là cách tôi đã giải quyết nó:

Vì, tôi không thể lưu trữ các khóa Auth S3 của mình ở phía máy khách, tôi đã sử dụng các tập lệnh phía máy chủ của mình để tạo URL ký trước và gửi lại cho máy khách như:

const AWS = require('aws-sdk')

const s3 = new AWS.S3()
AWS.config.update({accessKeyId: 'your access key', secretAccessKey: 'you secret key'})

const myBucket = 'bucket-name'
const myKey = 'path/to/your/key/file.extension'
const signedUrlExpireSeconds = 60 * 5 // your expiry time in seconds.

const url = s3.getSignedUrl('getObject', {
 Bucket: myBucket,
 Key: myKey,
 Expires: signedUrlExpireSeconds
})

// return the url to client

Sử dụng URL này ở mặt trước để kích hoạt tải xuống:

function download(url){
    $('<iframe>', { id:'idown', src:url }).hide().appendTo('body').click();
}
$("#downloadButton").click(function(){
    $.ajax({
        url: 'example.com/your_end_point',
        success: function(url){
            download(url);
        }
    })
});

Chuyển đổi dữ liệu thành loại BLOB ..

Chuyển đổi đối tượng Blob thành một chuỗi bằng cách sử dụng URL. createdObjectUrl () ..

Vui lòng đảm bảo rằng bạn có tài khoản AWS với thẩm quyền quản trị.

Khi bạn đã đăng nhập AWS, bạn nên tạo một chính sách và đính kèm nó vào tài khoản của mình, sau đó tạo khóa truy cập.

Tôi sẽ không nói về tất cả các chi tiết về cách thiết lập AWS, vì vậy nếu bạn muốn biết cách thực hiện việc này, vui lòng tham khảo tài liệu chính thức của AWS.

Và khi bạn tạo một chính sách để tải xuống tệp, bạn nên bao gồm những điều sau đây.

Chính sách

"s3:GetObject",
"s3:ListBucket",

Nhập chế độ FullScreenen EXIT Mode FullScreen

Ngoài ra, để cho phép những người khác truy cập các tệp S3 của bạn với URL được tạo, bạn cần thiết lập chính sách CORS trong tab Quyền của thùng S3 của bạn.

Chính sách CORS

 "AllowedMethods": [
            "GET",
        ],

Nhập chế độ FullScreenen EXIT Mode FullScreen

Ngoài ra, để cho phép những người khác truy cập các tệp S3 của bạn với URL được tạo, bạn cần thiết lập chính sách CORS trong tab Quyền của thùng S3 của bạn.

Chính sách CORS

Bây giờ, nó đã sẵn sàng để truy cập S3 từ cơ sở mã và tải xuống các tệp.

Tải xuống tệp trong cơ sở mã JavaScript
To install aws-sdk, you can simply use npm package manager to do below.

npm install aws-sdk

Nhập chế độ FullScreenen EXIT Mode FullScreen

Ngoài ra, để cho phép những người khác truy cập các tệp S3 của bạn với URL được tạo, bạn cần thiết lập chính sách CORS trong tab Quyền của thùng S3 của bạn.
First, you need to create S3 bucket object.

const s3bucket = new AWS.S3({
  accessKeyId: process.env.AWS_ACCESS_KEY,
  secretAccessKey: process.env.AWS_SECRET_KEY,
  signatureVersion: 'v4',
  region: process.env.AWS_REGION, // ex) us-west-2
});

Nhập chế độ FullScreenen EXIT Mode FullScreen

Ngoài ra, để cho phép những người khác truy cập các tệp S3 của bạn với URL được tạo, bạn cần thiết lập chính sách CORS trong tab Quyền của thùng S3 của bạn.

 const params = {
    Bucket: process.env.AWS_BUCKET_NAME,
    Expires: 3000,
    Key, // this key is the S3 full file path (ex: mnt/sample.txt)
  };
  const url = await s3bucket
    .getSignedUrlPromise('getObject', params)
    .catch((err) => {
      logger.error(err);
    });

Nhập chế độ FullScreenen EXIT Mode FullScreen

Ngoài ra, để cho phép những người khác truy cập các tệp S3 của bạn với URL được tạo, bạn cần thiết lập chính sách CORS trong tab Quyền của thùng S3 của bạn.

// please note that the responseType is stream
 const res = await axios.get(url, {
        responseType: 'stream',
      });

// receive the data as a read stream
const istream = res.data;

// create a write stream with the path including file name and its extension that you want to store the file in your directory.
const ostream = fs.createWriteStream(fullPath);

// using node.js pipe method to pipe the writestream
istream.pipe(ostream);

Nhập chế độ FullScreenen EXIT Mode FullScreen

Ngoài ra, để cho phép những người khác truy cập các tệp S3 của bạn với URL được tạo, bạn cần thiết lập chính sách CORS trong tab Quyền của thùng S3 của bạn.

Chính sách CORS

Hướng dẫn download file from s3 javascript - tải xuống tệp từ javascript s3

Bây giờ, nó đã sẵn sàng để truy cập S3 từ cơ sở mã và tải xuống các tệp.

Tải xuống tệp trong cơ sở mã JavaScript

Hướng dẫn download file from s3 javascript - tải xuống tệp từ javascript s3

Khi bạn đã nhận được khóa truy cập AWS và khóa bí mật, bạn có thể lưu trữ chúng với thông tin và tên xô khu vực AWS trong tệp .ENV.

Ngoài ra, vui lòng đảm bảo rằng bạn đã cài đặt AWS-SDK trong dự án của mình. Để cài đặt AWS-SDK, bạn chỉ cần sử dụng Trình quản lý gói NPM để làm bên dưới.

Hướng dẫn download file from s3 javascript - tải xuống tệp từ javascript s3

Và đây là mã đơn giản để tạo URL tải xuống. Đầu tiên, bạn cần tạo đối tượng xô S3.

Và sau đó, sử dụng getSignedUrlPromise() để nhận URL tải xuống được tạo.

Hướng dẫn download file from s3 javascript - tải xuống tệp từ javascript s3

Một khi, bạn đã nhận được URL, bạn có thể sử dụng mô -đun yêu cầu HTTP (trong trường hợp của tôi, tôi đã sử dụng Axios) để tải xuống tệp.

Với đối tượng luồng đọc, bạn có thể theo dõi các sự kiện có chức năng .on(). Các sự kiện mà bạn có thể quan tâm trong quá trình tải xuống là ____10 (khi luồng kết thúc, có nghĩa là tải xuống), ____ 11 (nhận dữ liệu chunk - quá trình tải xuống) và

function download(url){
    $('<iframe>', { id:'idown', src:url }).hide().appendTo('body').click();
}
$("#downloadButton").click(function(){
    $.ajax({
        url: 'example.com/your_end_point',
        success: function(url){
            download(url);
        }
    })
});
2 (khi không tải xuống).

Hướng dẫn download file from s3 javascript - tải xuống tệp từ javascript s3

Bạn đoán nó

Mặt hàng phổ biến nhất trong cửa hàng của chúng tôi là nhãn dán. Lấy một gói ngay hôm nay (với vận chuyển miễn phí)!

Đọc tiếp theo

Chọn cuộc phiêu lưu của riêng bạn: nguồn mở, phần mềm độc quyền, tự lưu trữ hoặc quản lý

Note:

Sau khi chưa được công bố, bài đăng này sẽ trở nên vô hình đối với công chúng và chỉ có thể truy cập vào LDSROGAN.

Họ vẫn có thể xuất bản lại bài nếu họ không bị đình chỉ.

Cảm ơn vì đã giữ cho cộng đồng Dev 👩‍💻👨‍💻 an toàn. Đây là những gì bạn có thể làm để gắn cờ LDSROGAN:

Làm cho tất cả các bài viết của ldsrogan ít nhìn thấy

LDSROGAN liên tục đăng nội dung vi phạm Bộ quy tắc ứng xử của cộng đồng Dev vì nó là quấy rối, tấn công hoặc spam.

Làm cách nào để nhận các tệp từ AWS S3?

Trong bảng điều khiển Amazon S3, chọn Xô S3 của bạn, chọn tệp bạn muốn mở hoặc tải xuống, chọn hành động, sau đó chọn mở hoặc tải xuống. Nếu bạn đang tải xuống một đối tượng, chỉ định nơi bạn muốn lưu nó. Quy trình lưu đối tượng phụ thuộc vào trình duyệt và hệ điều hành mà bạn đang sử dụng.. If you are downloading an object, specify where you want to save it. The procedure for saving the object depends on the browser and operating system that you are using.

Làm cách nào để tải xuống một tệp bằng JavaScript?

Vì vậy, các bước để tải xuống tệp sẽ là:..
Sử dụng API Fetch để tải xuống tệp tập lệnh ..
Chuyển đổi dữ liệu thành loại BLOB ..
Chuyển đổi đối tượng Blob thành một chuỗi bằng cách sử dụng URL.createdObjectUrl () ..
Tạo một phần tử để tải xuống chuỗi ..

Làm cách nào để tải xuống một tệp từ dòng lệnh AWS?

Đăng nhập vào bảng điều khiển quản lý AWS và mở bảng điều khiển Amazon S3 tại https://console.aws.amazon.com/s3/ ...
Trong danh sách xô, chọn tên của xô mà bạn muốn tải xuống một đối tượng từ ..
Bạn có thể tải xuống một đối tượng từ xô S3 theo bất kỳ cách nào sau:.

Làm cách nào để tải xuống từ S3 với React?

Tệp JS, sử dụng React Bootstrap làm menu thả xuống để có thể chọn một tên tệp cụ thể: Nhập React, {usestate} từ 'React';Nhập {listgroup, thả xuống} từ 'React-bootstrap';Nhập AWS từ 'AWS-SDK';const inputDownload = () => {const [Mẫu, Settemplate] = usestate ('chọn mẫu');AWS.