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

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

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

Nuxt.jsは、ユニバーサルなSPAが開発可能なVue.jsベースのフレームワーク。UIの描画サポートに特化しており、SSRにおけるサーバーサイドとクライアントサイドのUIレンダリングなどさまざまな機能を持ちます。

Google Cloud Storage

Google Cloud Storageは、グーグル社が提供しているクラウドベースのデベロッパー・企業向けストレージサービス。可用性に優れ、APIで操作可能なため、データのアーカイブ保存やアプリケーションのコンテンツ提供など様々な用途に活用できます。

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

2310閲覧

ファイルアップロード時にファイル名を変更したい

Khy

総合スコア118

Nuxt.js

Nuxt.jsは、ユニバーサルなSPAが開発可能なVue.jsベースのフレームワーク。UIの描画サポートに特化しており、SSRにおけるサーバーサイドとクライアントサイドのUIレンダリングなどさまざまな機能を持ちます。

Google Cloud Storage

Google Cloud Storageは、グーグル社が提供しているクラウドベースのデベロッパー・企業向けストレージサービス。可用性に優れ、APIで操作可能なため、データのアーカイブ保存やアプリケーションのコンテンツ提供など様々な用途に活用できます。

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2020/03/20 10:08

Nuxt.jsでhoge.jpgというファイルをファイルアップロードする時にファイル名をavatars/hoge.jpgという名前に変更し、Google Cloud Storageのavatarsフォルダにファイルをアップロードできるようにしたいです。

そこでファイルオブジェクトを取得後、ファイル名を書き換えようとしたのですがTypeError: Cannot assign to read only property 'name' of object '#<File>'というエラーが表示されました。

何か解決策はございますでしょうか?

<template> <v-form> <div> <input ref="input" @change="onChange" type="file" accept="image/*" style="display:none" /> <v-text-field @click="clickBtn" v-model="filename" label="画像ファイルを選択" /> </div> <v-btn @click="upload">アップロード</v-btn> </v-form> </template> <script> export default { data() data() { return { file: {}, filename: '' } }, methods: { clickBtn() { this.$refs.input.click() }, onChange(event) { this.file = event.target.files[0] }, upload() { this.file.name = 'avatars/' + this.file.name const formData = new FormData() formData.append('user[avatar]', this.file) this.$axios .$put(`/users/${this.$store.$auth.user.id}`, formData, { headers: { 'Content-Type': 'multipart/form-data' } }) .then((response) => { console.log(response) alert('画像が変更されました。') }) .catch((error) => { console.log(error) }) } } } </script>

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

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

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

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

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

guest

回答1

0

ベストアンサー

こんにちは、Khyさん

FileObjectのnameをjavascriptで変更することは出来ないので共有されているコードの

/users/${this.$store.$auth.user.id}

の処理で変更する必要があります。

上記endpoint内部でどのように処理されているか不明なので正確にお答え出来ないのですが、
サーバー側で保存する際にavatars/hoge.jpgで保存すれば大丈夫かと思います。

投稿2020/03/20 14:19

jtemplej

総合スコア61

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

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

Khy

2020/03/20 23:54

ご回答ありがとうございます! javascriptでは厳しいのですね、一度サーバー側(Rails)の方で試してみます! ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問