# พัฒนาโปรแกรมเพื่ออัปโหลดไฟล์จากเซิร์ฟเวอร์ ด้วย NodeJS

# ติดตั้งไลบรารีเพื่อจัดการ

npm install --save aws-sdk
1

# เริ่มสร้าง Client Instance เพื่อใช้ทำงาน

TIP

การเชื่อมต่อจะต้องใช้ Access key ซึ่งผู้ที่มีสิทธิ์จัดการ space จะสามารถสร้าง Access key ใหม่ได้

วิธีการสร้าง และจัดการ Access key →

# ตัวอย่างการสร้าง Signed URL ด้วย SDK

const AWS = require('aws-sdk');
// Configure AWS SDK
AWS.config.update({
  accessKeyId: 'YOUR_ACCESS_KEY',
  secretAccessKey: 'YOUR_SECRET_KEY',
  endpoint: 'https://st-th-1.byteark.com', 
  s3ForcePathStyle: true, 
  signatureVersion: 'v4' 
});
const s3 = new AWS.S3();
function generateSignedUrl(bucketName, fileName) {
  const params = {
    Bucket: bucketName,
    Key: fileName,
    Expires: 60 // Expires in 60 seconds
  };
  return s3.getSignedUrl('putObject', params);
}
async function uploadFileToS3(signedUrl, file) {
    const response = await fetch(signedUrl, {
        method: 'PUT',
        body: file
    });
    if (response.ok) {
        console.log('File uploaded successfully.');
    } else {
        console.error('Upload failed:', response.statusText);
    }
}
const url=generateSignedUrl('YOUR_BUCKET_NAME', 'filename.txt')
console.log(url)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39

ผู้ใช้จะได้รับ URL ที่มี X-Amz-Signature และพารามิเตอร์ต่างๆ ดังนี้ โดยสามารถใช้ URL นี้เพื่อการอัพโหลดไฟล์ขึ้นสู่ระบบได้

https://st-th-1.byteark.com/tvarchive/filename.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=LUFH7YU31W8LJ3V24DQ1%2F20231204%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20231204T152638Z&X-Amz-Expires=60&X-Amz-Signature=2dda74628d426482b4030b61869bd92bf3816fa03f2d7bf13df03eeade96b658&X-Amz-SignedHeaders=host
1