質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Q&A

解決済

2回答

414閲覧

jpgファイルをリネームしたい

west_side_park

総合スコア45

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

0グッド

0クリップ

投稿2021/08/18 11:34

編集2021/08/18 12:05

前提・実現したいこと

あるディレクトリにあるjpgファイルをリネームしてS3にアップロードしたい。
アップロード後、ディレクトリは削除する。

試したこと

js

1const fs = require('fs'); 2 3const filepath = '../image/test.jpg'; 4const reFilename = 'test2.jpg'; 5const reFilepath = `../image/${reFilename}`; 6fs.rename(filepath, reFilepath, (err) => { 7 if (err) throw err; 8 const uploadFile = fs.readSync(reFilepath); 9 s3.upload(bucket, key, uploadFile); 10} 11

問題点
① ../image/ 配下に、test.jpgと、test2.jpgが生成される。test.jpgを上書きたい
② 生成されたtest2.jpgが壊れていて、アップロードされたtest2.jpgが開けない

どうしてファイルが壊れるのかが分かりませんでした。
ご教授お願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

よく考えると、ファイル名を変換するのは
s3.upload(bucket, key, uploadFile); の引数keyを、変換したいファイル名にすれば良かったです。

そのため、ディレクトリにあるjpgファイルをリネームする必要はありませんでした。
ご回答いただいた方、ありがとうございました。

投稿2021/08/22 09:19

west_side_park

総合スコア45

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

js

1const reFilepath = `../imaga/${reFilename}`;

imaga とスペルミスしていますが、これは質問を記述したときのミスでしょうか?

test.jpgを上書きたい

test.jpg 「で」上書きたい、の意味でしょうか? test2.jpg を上書きしているように見えます。
詳しくは rename(oldPath, newPath, callback) の引数についてリファレンスを参照してください。
https://nodejs.org/api/fs.html#fs_fs_rename_oldpath_newpath_callback

デバッグの基本ですが、一つ一つ段階的に何が起こっているか確認しましょう。

  • 実行ログにエラーはないか。
  • 上書きする前の test.jpg, test2.jpg は表示可能か。
  • 上書きしたあとの test2.jpgtest.jpg と一致しているか。(ハッシュ値などでチェック)
  • アップロードしたあとの test2.jpg はアップロード前のものと同じか。

投稿2021/08/18 11:58

編集2021/08/18 12:01
mather

総合スコア6753

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

west_side_park

2021/08/18 12:13

回答ありがとうございます。 >imaga とスペルミスしていますが、これは質問を記述したときのミスでしょうか? すみません、こちら記述ミスです。直しておきました。 ・実行ログにエラーはないか →はい、エラーはありません。 ・上書きする前の test.jpg, test2.jpg は表示可能か →test.jpgをtest2.jpgというファイル名で上書きしたいです。 実行すると、../image/配下にtest.jpgとtest2.jpgの2ファイルができます。  test.jpgは表示できますが、test2.jpgは表示できません。  .jpgとファイル名に付いていますが、画像ファイルではないようです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問