2017-02-07 2 views
-1

ファイルをフォームに追加してPOSTリクエストで送信しようとしています。

問題はファイルがjsスクリプトで生成されることです(base64のクロップされたイメージです)。 次に、base64からblobに変換します。そして、私のフォームにこのBLOBをどのようにリンクするのか分かりません。

私はajaxを介してそれを行うことができますが、xhr/ajaxのないファイルとして画像を送信し、$_FILESにPHP側の処理を探しています。

さえ分からないのですが、それは私のフォームはあなたが隠されたキャンバスを作成することができますし、そのキャンバスにあなたのbase64でエンコードされた文字列と画像を描画することができますのattr'multipart/form-data'

+0

おそらく、隠れた入力の '.value'にblobを入れることができます。 '$ _FOSES'には入りません。' $ _POST'にあります。 – Barmar

+0

私はそれを隠しフィールドに入れ、PHP側で変換することができます。 私はフレームワーク用のウィジェットを作成しようとしています。ユーザーがファイルを取得して最初に変換する代わりに作業を続ける方が簡単です。もし私が$ _FILESなしで何の方法も使わないのなら、確かに – user3428885

答えて

0

を持って

可能です。

<canvas style="height:200px;width:200px;display:none;" id="picture"></canvas> 
<input type="hidden" name="clicked_image" id="clicked_image" /> 

以下のような何か、その後

<script type="text/javascript"> 
var videoPicture = 'your base64 string'; 
var hiddenPictureField = document.querySelector('input#clicked_image'); 
var canvasPicture = window.canvas = document.querySelector('canvas#picture'); 
canvasPicture.width = 480; 
canvasPicture.height = 360; 
canvasPicture.getContext('2d'). 
drawImage(videoPicture, 0, 0, canvasPicture.width, canvasPicture.height); 
hiddenPictureField.value = canvasPicture.toDataURL("image/png"); 
</script> 

としてjavascriptのコードそしてあなたはclicked_imageフィールドに画像を取得します。ベース64文字列に応じてそれを処理することができます。

+0

彼は 'hiddenPictureField.value = 'あなたのbase64文字列';'を実行してキャンバスをスキップすることはできませんでしたか? – Barmar

+0

しかし、clicked_imageは常にテキストタイプですか?それは、テキストデータとして送信されます。私はそれがtype = "file"のようにファイルとして送信する必要があります。 – user3428885

+0

はい、あなたもそうすることができ、ファイルの内容を設定する方法はありません。作成できるテキストフィールドだけであり、ユーザーにそれを示すことができます。私はキャンバスをフロントエンドユーザーに表示する必要がある場合にのみ使用しました。そのスタイルを変更することができます。 blobの値を入力ファイルに設定することはできません。代わりに、base64文字列でテキストフィールドの値を設定し、それに応じて受信側でそれを処理する必要があります。ありがとう –

関連する問題