MinIO - 53. 사전 서명된 URL을 사용하여 파일 업로드

목록

Upload Files Using Pre-signed URLs

사전 서명된 URL을 사용하여 파일 업로드

Using pre-signed URLs, a client can upload files directly to an S3-compatible cloud storage server (S3) without exposing the S3 credentials to the user.

클라이언트는 사전 서명된 URL을 사용하여 S3 자격 증명을 사용자에게 노출하지 않고도 S3 호환 클라우드 저장소 서버 (S3)에 파일을 직접 파일을 업로드할 수 있습니다.

This guide describes how to use the presignedPutObject API from the MinIO JavaScript Library to generate a pre-signed URL.

이 가이드에서는 MinIO JavaScript 라이브러리의 presignedPutObject API를 사용하여 사전 서명된 URL을 생성하는 방법을 설명합니다.

This is demonstrated through a JavaScript example in which an Express Node.js server exposes an endpoint to generate a pre-signed URL and a client-side web application uploads a file to MinIO Server using that URL.

이는 Express Node.js 서버가 엔드포인트를 노출하여 사전 서명된 URL을 생성하고 클라이언트 측 웹 애플리케이션이 해당 URL을 사용하여 파일을 MinIO 서버에 파일을 업로드하는 JavaScript 예제를 통해 입증됩니다.

Create the Server

1. 서버 생성

Create the Client-side Web Application

2. 클라이언트 측 웹 애플리케이션 생성

1. Create the Server

1. 서버 생성

The server consists of an Express Node.js server that exposes an endpoint called /presignedUrl. This endpoint uses a Minio.Client object to generate a short-lived, pre-signed URL that can be used to upload a file to Mino Server.

서버는 /presignedUrl이라는 엔드포인트를 노출하는 Express Node.js 서버로 구성됩니다. 이 엔드포인트는 Minio.Client 객체를 사용하여 파일을 Mino 서버에 파일을 업로드하는 데 사용할 수 있는 단기적이고 사전 서명된 URL을 생성합니다.

// In order to use the MinIO JavaScript API to generate the pre-signed URL, begin by instantiating // a `Minio.Client` object and pass in the values for your server.

// MinIO JavaScript API를 사용하여 사전 서명된 URL을 생성하려면 `Minio.Client` 객체를 인스턴스화하고 서버에 대한 값을 전달하는 것으로 시작하세요.

// The example below uses values for play.min.io:9000

// 아래 예에서는 play.min.io:9000의 값을 사용합니다.

const Minio = require('minio') var client = new Minio.Client({ endPoint: 'play.min.io', port: 9000, useSSL: true, accessKey: 'Q3AM3UQ867SPQQA43P2F', secretKey: 'zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG' })

// Instantiate an `express` server and expose an endpoint called `/presignedUrl` as a `GET` request that // accepts a filename through a query parameter called `name`.

//`express` 서버를 인스턴스화하고 `name`이라는 쿼리 매개변수를 통해 파일 이름을 받아들이는 `GET` 요청으로 `/presignedUrl`이라는 엔드포인트를 노출합니다.

For the implementation of this endpoint, // invoke [`presignedPutObject`](https://docs.min.io/docs/javascript-client-api-reference#presignedPutObject)

이 엔드포인트 구현을 위해, // [`presignedPutObject`](https://docs.min.io/docs/javascript-client-api-reference#presignedPutObject)를 호출합니다.

// on the `Minio.Client` instance to generate a pre-signed URL, and return that URL in the response:

//`Minio.Client` 인스턴스에서 사전 서명된 URL을 생성하고 응답에 해당 URL을 반환합니다.

// express is a small HTTP server wrapper, but this works with any HTTP server

// express는 작은 HTTP 서버 래퍼이지만 모든 HTTP 서버에서 작동합니다.

const server = require('express')() server.get('/presignedUrl', (req, res) => { client.presignedPutObject('uploads', req.query.name, (err, url) => { if (err) throw err res.end(url) }) }) server.get('/', (req, res) => { res.sendFile(__dirname + '/index.html'); }) server.listen(8080)

2. Create the Client-side Web Application

2. 클라이언트측 웹 애플리케이션 생성

The client-side web application's user interface contains a selector field that allows the user to select files for upload, as well as a button that invokes an onclick handler called upload:

클라이언트측 웹 애플리케이션의 사용자 인터페이스에는 사용자가 업로드할 파일을 선택할 수 있는 선택기 필드와 업로드라는 onclick 핸들러를 호출하는 버튼이 포함되어 있습니다.

No uploads

Note: This uses the File API, QuerySelector API, fetch API & Promise API.

메모: 이는 File API, QuerySelector API, fetch API 및 Promise API를 사용합니다.