Изначально я хотел использовать AJAX для загрузки файлов без обновления, но позже обнаружил, что это непросто реализовать. После долгого поиска в Интернете я наконец нашел реализацию «псевдо-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]. Отправьте ДЕЙСТВИЕ FORM в скрытый IFRAME для выполнения, а затем заполните операцию в MSG при возврате. Аналогичный код SERVLET выглядит следующим образом. следует:
public void doPost (запрос HttpServletRequest, ответ HttpServletResponse)
выдает IOException, ServletException{
PrintWriter out = response.getWriter();
response.setCharacterEncoding("utf-8");
response.setHeader("Кодировка","utf-8");
response.setHeader("Cache-Control", "no-cache");
String filepath="",msg="",ext="";
SmartUpload su = новый SmartUpload();
логическое значение succ=истина;
. . . . . .
пытаться{
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);
если (file.isMissing()) продолжить;
Строка fileName = UploadFileUtils.returnRandomFileName(file.getFileExt());
ext=file.getFileExt().toLowerCase();
. . . . . . . . . . .
msg="<a href="#">Загрузка прошла успешно!</a>";
}
}catch(SmartUploadException иск){
успех = ложь;
msg="<font color=red>Не удалось загрузить: проверьте расширение или размер файла!</font>";
}catch(Исключение ex){
успех = ложь;
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+"');");
выход.закрыть();
}