Azel_TvT
@Azel_TvT (水野 孝星)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

Node.jsでAWS S3(amazon S3)を用いてプロジェクトファイルにブラウザからファイルを保存する方法

解決したいこと

初めまして。
Node.jsを用いてブラウザからアップロードしたファイルをプロジェクトファイルに保存するウェブアプリケーションの作成をしたいと考えております。
multerとfsを利用し、ローカル環境でのテストは無事成功したのですがHeorkuにアップロードしたところ動きませんでした。
なぜかと調べてみるとどうやらherokuでファイルアップロードするのはよくないようです。(できるけど一時ファイルの作成のみ)
そこでいろいろと調べていたところAWS S3というサービスを利用するといいと聞いたので調べてみたのですが出てくる情報がAWS S3のストレージ(?)にアップロードするというものばかりでした。
どうしてもプロジェクトファイルに保存しなければいけないのですが、AWS S3を用いてやる場合どういう風に作成すればいいのでしょうか。
何か参考になるサイトや方法をご存じの方いましたらご教授お願いいたします。
以下コードです。

該当するソースコード

app.js(抜粋)
const storage = multer.diskStorage({
  destination: function (req, file, cb) {
    cb(null, "./tmp")
  },
  filename: function (req, file, cb) {
    cb(null, file.originalname)
  }
})

const upload = multer({ storage: storage })

app.use(express.static(path.join(__dirname,)));

app.get('/upload1', (req, res) =>{
  res.render('upload1.ejs');
});

app.post('/upload', upload.single('file'), function (req, res, next) {
  res.send('ファイルのアップロードが完了しました。');
  })
upload1.ejs
<!DOCTYPE html>
<html lang="ja"></html>
<head>
    <meta charset="UTF-8">
    <title>Express.js File Upload</title>
</head>
<body>
    <h1>ファイルアップロード</h1>
    <form action="/upload" method="POST" enctype="multipart/form-data">
        <input type="file" name="file">
        <button type="submit">送信</button>
    </form>
</body>
</html>
0

2Answer

こちらの記事にコメントされているのを見るに,Expressでstaticな扱いをしたいものとお見受けしますが,
Expressサーバが提供しないものにstaticな扱いをしようとする意味はありません.
imgなり何なりで参照すればよいと思います.

何が目的でユーザがアップロードしてリソースを追加できるようにするのかにもよりますが,
「プロジェクトファイル」が自分でビルドするファイルを置く領域を指しているのであれば,
そこに不用意にリソースが追加されるのはかなり危ない気がします.
もう少しアプリの目的を具体的に補足いただけませんか.(特に「プロジェクトファイルに保存しなければならない」特段の事情)

0Like

This answer has been deleted for violation of our Terms of Service.

Your answer might help someone💌