22694


クライアントサイドから画像アップロードする際の手段について質問です。

JSで`FormData`を用いたAjaxアップロードについては散見しますが、通常のHTTPでPOST送信する方法が見つからず、その手段について知りたいです。

前提条件は、

  * クライアントサイドで画像ファイル選択
  * クロップ処理
  * dataURIの形式で取得（またはBlob変換）

この際のdataURI(BloB）データをフォームの`<input
type="file">`に落としこむなどで、Ajaxではなく通常POSTでアップロード可能でしょうか？

以下の制限については調べてきた中で把握しています。

  * inputタグのfileはセキュリテイ上JSから選択ファイルを指定できない

バックエンドはRailsでcarrierwaveを利用しています。  
dataURIを文字列形式で送り、処理する手法はいくつか見つかりました。

  * [timsly/carrierwave-data-uri](https://github.com/timsly/carrierwave-data-uri)
  * [Uploading data URIs in Carrierwave](http://www.davehulihan.com/uploading-data-uris-in-carrierwave/)

しかし、一般的な手法があるのであれば知りたい次第です。

皆様よろしくお願いいたします。


CC BY-SA 3.0
2015-12-19T07:26:25.393
20169
2016-03-01T07:57:30.727
2016-01-13T05:16:16.280
8000
512
question
javascript ruby-on-rails
FormDataを使わずにBlobをアップロード・inputタグに設定する方法はありますか？


自己回答です。FormデータとしてPostする場合、やはりAjax以外はやり方がなさそうなので、  
base64形式のデータで画像データを送り、バックエンド側での処理を変更しました。

<https://github.com/timsly/carrierwave-data-uri>

上記gemでは、formからダイレクトに送るにはコード記述が多くなりそうなのでPRを送ったのですが、OKもらえなかったので少し変更したforkのコードで対応しました。

<https://github.com/timsly/carrierwave-data-uri/pull/6>  
<https://github.com/kntmrkm/carrierwave-data-uri>


CC BY-SA 3.0
2016-03-01T07:57:30.727
22694
2016-03-01T07:57:30.727
512
20169
answer