원래는 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>
</form>
그 중 FORM [b]의 TARGET 속성은 매우 중요합니다 [/b]. FORM의 ACTION을 숨겨진 IFRAME에 제출하여 반환할 때 MSG에 작업을 입력합니다. SERVLET의 유사한 코드는 다음과 같습니다. 다음과 같습니다:
공개 무효 doPost(HttpServletRequest 요청, HttpServletResponse 응답)
IOException, ServletException 발생{
PrintWriter 출력 = response.getWriter();
response.setCharacterEncoding("utf-8");
response.setHeader("Charset","utf-8");
response.setHeader("Cache-Control", "no-cache");
String filepath="",msg="",ext="";
SmartUpload su = new SmartUpload();
부울 succ=true;
. . . . . .
노력하다{
su.initialize(getServletConfig(),요청,응답);
su.setMaxFileSize(102400000);
su.setTotalMaxFileSize(102400000);
su.setAllowedFilesList(mediaExt+","+flashExt+","+imgExt);
su.setDeniedFilesList("exe,bat,,");
su.upload();
for (int i=0;i<su.getFiles().getCount();i++)
{
com.jspsmart.upload.File 파일 = su.getFiles().getFile(i);
if (file.isMissing()) 계속;
String fileName=UploadFileUtils.returnRandomFileName(file.getFileExt());
ext=file.getFileExt().toLowerCase();
. . . . . . . . . . .
msg="<a href="#">업로드 성공!</a>";
}
}catch(SmartUploadException 고소){
성공=거짓;
msg="<font color=red>업로드 실패: 파일 확장자나 파일 크기를 확인하세요!</font>";
}catch(예외예외){
성공=거짓;
msg="<font color=red>업로드 실패: 파일 확장자나 파일 크기를 확인하세요!</font>";
ex.printStackTrace();
}
msg=Escape.escape(msg);
만약(성공)
out.println("parent.document.getElementById('msg').innerHTML = unescape('"+msg+"');parent.backCallIframe('"+Escape.escape(ext)+"','"+Escape. escape(파일 경로)+"')");
또 다른
out.println("parent.document.getElementById('msg').innerHTML = unescape('"+msg+"');");
종료.닫기();
}