เดิมทีฉันต้องการใช้ AJAX เพื่ออัปโหลดไฟล์โดยไม่ต้องรีเฟรช แต่ต่อมาพบว่ามันไม่ง่ายเลยที่จะนำไปใช้ หลังจากค้นหาทางออนไลน์มาเป็นเวลานาน ในที่สุดฉันก็พบการใช้งาน "pseudo-AJAX" ตอนนี้ฉันจะโพสต์โค้ดจริงของฉัน ผู้อ่าน
ก่อนอื่น เราต้องการไฟล์ HTML หรือ JSP ที่อัปโหลด ดังนี้:
<FORM METHOD="POST" ACTION="../servlet/FileUploadServlet" enctype="multipart/form-data" target="hidden_frame" onSubmit="showmsg();" style="margin:0;padding:0" >
<input type="file" name="sfile" style="width:450">
<input type="hidden" name="act" value="upload">
<INPUT type="submit" value="อัปโหลดไฟล์"><span id="msg"></span>
<br>
<font color="red">รองรับการอัพโหลดไฟล์ JPG, JPEG, GIF, BMP, SWF, RMVB, RM, AVI</font>
<iframe name='hidden_frame' id="hidden_frame" style='display:none'></iframe>
</แบบฟอร์ม>
ในหมู่พวกเขาแอตทริบิวต์ TARGET ของ FORM [b] มีความสำคัญมาก [/b] ส่ง ACTION ของ FORM ไปยัง IFRAME ที่ซ่อนอยู่เพื่อดำเนินการ จากนั้นกรอกการดำเนินการใน MSG เมื่อส่งคืน รหัสที่คล้ายกันของ SERVLET คือ as ดังต่อไปนี้:
โมฆะสาธารณะ doPost (คำขอ HttpServletRequest, การตอบสนอง HttpServletResponse)
พ่น IOException, ServletException{
PrintWriter ออก = response.getWriter();
response.setCharacterEncoding("utf-8");
response.setHeader("ชุดตัวอักษร", "utf-8");
response.setHeader("Cache-Control", "no-cache");
String filepath="",msg="",ext="";
SmartUpload su = SmartUpload ใหม่ ();
บูลีน succ=true;
- - - - - -
พยายาม{
su.initialize(getServletConfig(),คำขอ,ตอบกลับ);
su.setMaxFileSize(102400000);
su.setTotalMaxFileSize(102400000);
su.setAllowedFilesList(mediaExt+,”+flashExt+,”+imgExt);
su.setDeniedFilesList("exe,ค้างคาว,,");
su.อัพโหลด();
สำหรับ (int i=0;i<su.getFiles().getCount();i++)
-
ไฟล์ com.jspsmart.upload.File = su.getFiles().getFile(i);
ถ้า (file.isMissing()) ดำเนินการต่อ;
ชื่อไฟล์สตริง=UploadFileUtils.returnRandomFileName(file.getFileExt());
ext=file.getFileExt().toLowerCase();
- - - - - - - - - - -
msg="<a href="#">อัปโหลดสำเร็จ!</a>";
-
} catch (ฟ้อง SmartUploadException) {
succ=เท็จ;
msg="<font color=red>การอัปโหลดล้มเหลว: โปรดตรวจสอบนามสกุลไฟล์หรือขนาดไฟล์!</font>";
} catch (ข้อยกเว้นเช่น) {
succ=เท็จ;
msg="<font color=red>การอัปโหลดล้มเหลว: โปรดตรวจสอบนามสกุลไฟล์หรือขนาดไฟล์!</font>";
เช่น printStackTrace();
-
msg=Escape.escape(ผงชูรส);
ถ้า(สำเร็จ)
out.println("parent.document.getElementById('msg').innerHTML = unescape('"+msg+"');parent.backCallIframe('"+Escape.escape(ext)+"','"+Escape. หลบหนี(เส้นทางไฟล์)+"')");
อื่น
out.println("parent.document.getElementById('msg').innerHTML = unescape('"+msg+"');");
ออก.ปิด();
-