Rumah  >  Artikel  >  hujung hadapan web  >  Melaksanakan operasi muat naik fail tanpa muat semula dengan menyembunyikan kemahiran iframe_javascript

Melaksanakan operasi muat naik fail tanpa muat semula dengan menyembunyikan kemahiran iframe_javascript

WBOY
WBOYasal
2016-05-16 15:10:341555semak imbas

Malah, sebelum ajax muncul, aplikasi web juga boleh menjadi bebas muat semula Pada masa itu, ini kebanyakannya dilakukan melalui IFrame. Sudah tentu, selepas Ajax muncul, orang ramai berpusu-pusu ke kem Ajax, dan iFrame menjadi kurang popular. Tetapi menggunakan iFrame untuk memuat naik fail tanpa menyegarkan sememangnya pilihan yang baik.

Penyelesaian adalah untuk mengendalikan operasi muat naik melalui iframe tersembunyi saya menggunakan ReactJS, amazeui, nodejs

Sasaran 1.html menghala ke nama iframe, yang bermaksud bahawa operasi muat naik diserahkan kepada iframe untuk diproses

<form id="supplyformFile" name="formFile" method="post" target="frameFile"
encType="multipart/form-data">
<div className="am-form-file">
<button type="button" className="am-btn am-btn-default am-btn-sm">
<i className="am-icon-cloud-upload"></i> 选择要上传的文件
</button>
<input type="file" id="fileUp" onChange={this.UploadSupplyer} name="fileUp" />
</div> 
<div id="supplyfile_div"></div>
</form>
<iframe id="frameFile" name="frameFile" style={{display: 'none'}}></iframe>
<input type="hidden" id="supplyfile" />

2.Pemprosesan JS menyerahkan borang selepas pemilihan fail

UploadSupplyer:function(){
var path = document.all.fileUp.value;
if(!path){return false;}
$('.loadinfo').html('<p>文件上传中...</p>').removeClass("none");
$('#supplyformFile').submit();
},

Pemprosesan pelayan 3.nodejs, kerana halaman pemprosesan ialah domain pelayan nodejs, terdapat masalah merentas domain dalam iframe, jadi anda perlu menggunakan kaedah postMessage H5 untuk menghantar parameter ke halaman borang di luar iframe

var fname = req.files.fileUp.path.replace("publicfiles", "").replace("public/files/", "");
res.writeHead(200, {'Content-type' : 'text/html'});
res.write('<script>');
res.write('window.parent.postMessage("'+fname+'","*");');
res.end('</script>');

4.JS memproses hasil muat naik

window.addEventListener('message',function(e){
var fname=e.data;
$('#supplyfile').val(fname);
$(".loadinfo").addClass("none");
$(".successinfo").html("<p>文件上传成功</p>").removeClass("none");
setTimeout(function() { $(".successinfo").addClass("none");}, 2000);
$("#supplyfile_div").html('<span class="am-icon-file-o"></span> <a target="_blank" href="'+hosts+'/files/'+fname+'">供应商确认单</a>');
},false);

Di atas adalah pengenalan editor kepada operasi memuat naik fail tanpa menyegarkan dengan menyembunyikan iframe. Saya harap ia akan membantu semua orang!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn