当初は 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 の TARGET 属性 [b] が非常に重要です。 [/b] FORM の ACTION を非表示の IFRAME に送信し、戻ってくるときに MSG に操作を記入します。以下に続きます:
public void doPost(HttpServletRequest リクエスト、HttpServletResponse レスポンス)
IOException、ServletExceptionをスローします{
PrintWriter 出力 = response.getWriter();
response.setCharacterEncoding("utf-8");
response.setHeader("文字セット","utf-8");
response.setHeader("キャッシュ制御", "キャッシュなし");
String filepath="",msg="",ext="";
SmartUpload su = new SmartUpload();
ブール値 succ=true;
。 。 。 。 。 。
試す{
su.initialize(getServletConfig(),request,response);
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()) 続行;
文字列 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=エスケープ.エスケープ(msg);
if(成功)
out.println("parent.document.getElementById('msg').innerHTML = unescape('"+msg+"');parent.backCallIframe('"+Escape.escape(ext)+"','"+Escape.エスケープ(ファイルパス)+"')");
それ以外
out.println("parent.document.getElementById('msg').innerHTML = unescape('"+msg+"');");
out.close();
}