jsファイルリーダーとAJAXを使用してサーバーにファイルをアップロードしようとしています。js fileReaderを使用してファイルをアップロードするとファイルが破損する
FileAPIとfileReaderを使用してファイルを読み取り、文字列に変換してから、AJAXリクエストでサーバーに送信しました。ここ は私のクライアント側のjsコードです:ここでは
function upload() {
var file = document.getElementById('periodExcel').files[0];
if (file) {
console.log(file);
var reader = new FileReader();
reader.readAsText(file, file.type);
console.log(reader);
reader.onload = uploadAndRun;
}
}
function uploadAndRun(event) {
console.log(event);
var result = event.target.result;
$('#js').html(result);
var fileName = document.getElementById('periodExcel').files[0].name; //Should be 'picture.jpg'
$.post('./upload.php', {data: result, name: fileName}, function(result2){
$('#php').html(result2);
});
}
は、アップロードPHPスクリプトです:
file_put_contents('upload/' . $_POST['name'], $_POST['data']);
それだけでPHP file_put_contents
機能を使用してファイルを書き込みます。
私の問題は、アップロードされたファイルが壊れていて、元のファイルとサイズが違うことです(サイズが大きくなります)。
私は同じファイルを読み込み、file_put_contents
を使って再度書き込む機能を使用しようとしましたが、結果ファイルは元のファイルと同じで、同じでした。
私はその後から来た文字列と私に与え二つの文字列とstrcmp
を使用して2つの文字列を比較する(ファイルリーダーとのfile_get_contentsから来ているものから来るもの)を、比較してみましたfileReader
は、file_get_contents
からのものより大きい。
readAsText
機能を使用しているときに、私のコードの問題と、このようにFileReaderを使用してファイルをアップロードする方法について教えてください。
ファイルをアップロードするときに 'enctype'が正しく設定されていることを確認するには、[' FormData'](https://developer.mozilla.org/en-US/docs/Web/API/FormData)APIを使用する必要があります – apokryfos
Iそれを使用しようとしましたが、塗りつぶされず(動作しないで追加されます)、送信を妨げるエラーが発生します。 –