私は、binmodeを使って読み込んで保存するperlスクリプトにアップロードするためにsinlgeファイルイメージを受け取るフォームを用意しています。 perlスクリプトはファイルストリームを取得していないようです(ファイルサイズは0バイトになります)。私は/ javascriptのformdata.appendにhtmlの入力から正しい名前/参照を使用して渡しているかどうかはわかりません。私はjqueryとxhrバージョン2のソリューションを当面避けています。私はこの作業を可能にすることを決意しています。ajax/javascriptを使ってperlスクリプトにファイルをアップロードできません
私は現在使用しているHTML入力
<input id="newimg" type="file" onchange="changeimg(this.value,dbtable,dbid);">
javascriptの
function changeimg(filename,dbtable,dbid) {
// ignor "c:\fakepath\" in filename
var filename = document.getElementById('newimg').files[0].name;
var formdata = new FormData();
formdata.append("Content-Type", "multipart/form-data");
formdata.append("dbtable",dbtable);
formdata.append("dbid",dbid);
formdata.append("filename",filename);
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
var xhr = new XMLHttpRequest();
} else {
// code for IE6, IE5
var xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
xhr.open("POST","/uploader.pl",true);
xhr.send(formdata);
}
perlのスニペット。この同じコードは、 "非javascript"ページフォームのサブミットの下で私のためにうまくいきました。
#
my $upload_filehandle = $cgi->upload("filename");
#
open (UPLOADFILE, ">$newfile");
binmode UPLOADFILE;
while (<$upload_filehandle>) {
print UPLOADFILE;
}
close UPLOADFILE;
#
をperlへ変更なし? Perlコードを追加できますか? – Sebastian