railsで画像のダウンロードを実装しています。
controllerではsend_dataで画像を送っています。
ruby
1def download 2 user = User.find(params[:id]) 3 4 send_data( 5 user.file.download, 6 disposition: 'attachment', 7 filename: user.file.filename, 8 type: user.file.content_type, 9 stream: 'true' 10 ) 11 end
問題はview側で、最初はaタグでリンクにしていました。(vueを使っています。)
html
1<a :href="'/api/users' + user.id '/download'">ダウンロード</a>
こちら画像のダウンロードは問題なかったのですが、urlが変わってしまい、その後のfetch送信に影響が出てしまいました。
vue
1submit: function () { 2 fetch(`/api/users/${this.user.id}`, { 3 method: "PUT", 4 headers: { "Content-Type": "application/json" }, 5 body: JSON.stringify(this.sendData), 6 })
これの送信されるパスがusers/1/download/users
とおかしくなりました。
そのため、画像のダウンロードもfetchでするように修正したのですが、通信はうまくいってるようなのですが、画像の保存のモーダルがでてきません。
html
1<a href="/javascript:void(0)" @click="download()>ダウンロード</a>
vue
1download: function(){ 2 fetch("/api/users/" + this.user.id + "/download", { 3 method: "GET", 4 headers: { "Content-Type": "application/json" }, 5 })
あなたの回答
tips
プレビュー