2016-05-27 10 views
1

JavaScriptを使用してCanvasのDataURLを使用してイメージを作成しようとしています。ユーザーが送信を開始すると、その値は入力タイプのテキストタグ(例:<input type='text'>)に送信されますが、明らかにChromeでは長さが524,288文字になるとテキストが途切れてしまいます。入力タイプのテキストを使用して524288バイト以上のToDataURLを渡そうとしています

PHPで値を取得する必要があるため($ _POST ['dataurltext'];)、イメージを作成してそれを自分のWebサーバーにアップロードできるように、入力タグに送信します。

この長さをバイパスする方法についてのアイデアはありますか?

代わりにコメントボックスを使用する必要がありますか?

ご協力いただきありがとうございます。

答えて

0

canvasとしてBlobjavascriptに送信してみます。私のJSコードでHTMLCanvasElement.toBlob()

if (!HTMLCanvasElement.prototype.toBlob) { 
Object.defineProperty(HTMLCanvasElement.prototype, 'toBlob', { 
    value: function (callback, type, quality) { 

    var binStr = atob(this.toDataURL(type, quality).split(',')[1]), 
     len = binStr.length, 
     arr = new Uint8Array(len); 

    for (var i=0; i<len; i++) { 
    arr[i] = binStr.charCodeAt(i); 
    } 

    callback(new Blob([arr], {type: type || 'image/png'})); 
    } 
}); 
} 

Beyond $_POST, $_GET and $_FILE: Working with Blob in JavaScript and PHP

<?php 

// choose a filename 
$filename = "hello.json"; 

// the Blob will be in the input stream, so we use php://input 
$input = fopen('php://input', 'rb'); 
$file = fopen($filename, 'wb'); 

// Note: we don't need open and stream to stream, we could've used file_get_contents and file_put_contents 
stream_copy_to_stream($input, $file); 
fclose($input); 
fclose($file); 

?> 
+0

を参照してくださいphp

でファイルを処理するためにBlobstream_copy_to_streamまたはfile_get_contents()file_put_contents()を読み取るためのパラメータとしてphp://inputfopen()を使用し、私は '使用して終了しましたvar dataURL = bottleCanvas.toDataURL( "image/png"); 'の代わりに、var dataURL = bottleCanvas.toDataURL(" image/jpeg "、0.5);私の問題を解決しました。しかし、あなたの答えに感謝します。 – Kelsey

関連する問題