[javascript] 자바스크립트로 파일 업로드 및 다운로드 중 파일 저장 경로 지정하기

파일 업로드 및 다운로드는 웹 애플리케이션에서 흔히 사용되는 기능입니다. 여기에는 파일을 서버에 업로드하고 사용자가 해당 파일을 다운로드할 수 있어야 합니다. 때로는 업로드된 파일의 저장 경로를 지정해야 할 수도 있습니다. 이 글에서는 Node.js를 사용하여 파일 업로드 및 다운로드 중 파일 저장 경로를 지정하는 방법에 대해 알아보겠습니다.

파일 업로드

먼저, Expressmulter 패키지를 사용하여 Node.js 애플리케이션에서 파일을 업로드하는 방법을 살펴보겠습니다.

const express = require('express');
const multer  = require('multer');
const upload = multer({ dest: 'uploads/' });

const app = express();

app.post('/upload', upload.single('file'), (req, res) => {
  res.send('File uploaded successfully.');
});

app.listen(3000, () => {
  console.log('Server is running on port 3000');
});

위의 코드에서, multer를 사용하여 파일 업로드를 처리하고 dest 옵션을 사용하여 업로드된 파일이 저장될 경로를 지정할 수 있습니다.

파일 다운로드

이제 파일을 다운로드하는 방법을 살펴보겠습니다.

const express = require('express');
const app = express();
const path = require('path');

app.get('/download', (req, res) => {
  const filePath = '/uploads/example.pdf'; // 다운로드할 파일의 경로
  res.download(path.join(__dirname, filePath));
});

app.listen(3000, () => {
  console.log('Server is running on port 3000');
});

위의 코드에서는 클라이언트가 /download 엔드포인트에 요청을 보내면 서버에서는 지정된 파일을 다운로드할 수 있도록 합니다.

파일 저장 경로 지정

파일 저장 경로를 지정하려면 multer 설정에서 dest 옵션을 사용하여 업로드된 파일이 저장될 경로를 지정하면 됩니다.

const storage = multer.diskStorage({
  destination: function (req, file, cb) {
    cb(null, 'custom/path/') // 파일이 저장될 경로
  },
  filename: function (req, file, cb) {
    cb(null, file.fieldname + '-' + Date.now())
  }
})

const upload = multer({ storage: storage });

위의 코드에서는 multer를 사용하여 파일이 저장될 경로 및 파일명을 지정할 수 있습니다.

이제 여러분은 Node.js를 사용하여 파일을 업로드 및 다운로드하고, 파일이 저장될 경로를 지정하는 방법에 대해 알게 되었습니다. 이제 이를 활용하여 웹 애플리케이션에서 파일 관리 기능을 보다 유연하게 구현할 수 있을 것입니다.

참고 자료