イメージファイルのストリームを取得してasp.netのようなバックグラウンドに渡したいのですが、onloadイベントを発生させるたびに、プログラミングが成功した後に必ず達成されます。FileReader.onloadは時間内に成功しません
私はそれを防ぐためにsetTimeoutを使用して、それを処理して成功させようとしましたが、失敗しました。 以下のコメントはどのステップが失敗したかを説明しています。
$("#goodsImage").change(function (e) {
if ($("#goodsImage").val() == "")
{
alert("please choose the image you want to upload");
return;
}
var filepath = $("#goodsImage").val();
//$("#goodsImage").val();
var extStart=filepath.lastIndexOf(".");
var ext=filepath.substring(extStart,filepath.length).toUpperCase();
if(ext!=".BMP"&&ext!=".PNG"&&ext!=".GIF"&&ext!=".JPG"&&ext!=".JPEG"){
alert("only images could be uploaded");
return;
}
readFile(e.target.files[0]);
setTimeout(function() {
//I want to use setTimeOut to delay it
}, 1000);
//always undefined!!!
if ($("#hidImageStream").val() != "")
{
$.post("@Url.Action("UploadGoodImage")", { localPath: readerRs }, function (e)
{
if (e) {
$("#ImagePreviewUrl").val(e.data);
}
else {
}
});
}
});
function readFile(file) {
var reader = new FileReader();
reader.onload = readSuccess;
//always success after post request accomplished.
function readSuccess(evt) {
document.getElementById("hidImageStream").
value = evt.target.result;
};
reader.readAsText(file);
}
だ場合、実際にテストすることで、ファイルが完全にロードされたときに、それ自体を発射する非常に簡単です。読者 – dandavis
@ダンダビスもちろんあなたは正しいです、私はそれを私自身で解決しました、私は自分で答えた答えを見てください。 – MapleStory