Я пытаюсь реализовать dojox.form.Uploader для загрузки файлов. Я создал простой сервис REST в JAVA.
Из Firefox и Chrome сервис получает форму и сохраняет данные, но это не относится к IE8.
В IE8 я получаю совершенно другой объект ответа по сравнению с тем, что запускается в FF / Chr. На самом деле это массив с информацией о файле, все с сообщением «ошибка» - «время ожидания сервера». Фактически, отправка формы даже не затрагивает сервис.
Я только начал работать со службами JAVA REST, поэтому извините за любые очевидные ошибки.
Спасибо, куча.
M.
код клиента:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Uploading test</title>
<link rel="stylesheet" type="text/css"
href="https://ajax.googleapis.com/ajax/libs/dojo/1.6/dojo/resources/dojo.css" />
<link rel="stylesheet" type="text/css"
href="https://ajax.googleapis.com/ajax/libs/dojo/1.6/dijit/themes/tundra/tundra.css" />
<link rel="stylesheet" type="text/css"
href="https://ajax.googleapis.com/ajax/libs/dojo/1.6/dijit/themes/nihilo/nihilo.css" />
<link rel="stylesheet" type="text/css"
href="https://ajax.googleapis.com/ajax/libs/dojo/1.6/dijit/themes/soria/soria.css" />
<link rel="stylesheet" type="text/css"
href="https://ajax.googleapis.com/ajax/libs/dojo/1.6/dojox/form/resources/FileUploader.css" />
<link rel="stylesheet" type="text/css"
href="https://ajax.googleapis.com/ajax/libs/dojo/1.6/dojox/form/resources/UploaderFileList.css" />
<link rel="stylesheet" type="text/css"
href="https://ajax.googleapis.com/ajax/libs/dojo/1.6/dojox/form/resources/FileInput.css" />
<script type="text/javascript">djConfig = { parseOnLoad:true, isDebug:true, dojoBlankHtmlUrl: 'blank.html' };</script>
<script type="text/javascript"
src="https://ajax.googleapis.com/ajax/libs/dojo/1.6/dojo/dojo.xd.js"></script>
<script>
dojo.require("dojox.form.Uploader");
dojo.require("dojox.form.uploader.FileList");
dojo.require("dijit.form.Button");
dojo.require("dijit.form.TextBox");
dojo.require("dijit.form.CheckBox");
dojo.require("dojo.io.iframe");
dojo.require("dojox.form.FileInput");
dojo.require("dojox.form.uploader.plugins.Flash");
dojo.require("dojox.form.uploader.plugins.HTML5");
function prepareForm(){
var form = dojo.byId("myform");
// Disable the button at startup
//dijit.byId('submitId').set("disabled", true);
// Connect to the onChange event of file upload stuff.
dojo.connect(dojo.byId("uploader"), "onchange", function(){
//checkExtension();
});
// Connect to the onChange event of file upload stuff.
dojo.connect(dijit.byId("uploader"), "onComplete", function(response){
dojo.byId("response").innerHTML = "Form posted with status : " + response;
});
}
dojo.ready(prepareForm);
</script>
</head>
<body class="soria">
<b>Simple Form:</b>
<br>
<form method="post" action="jersey/fileupload2" id="myForm"
enctype="multipart/form-data">
<legend>file upload test</legend>
<input name="uploadedfile" multiple="true" type="file" id="uploader"
dojoType="dojox.form.Uploader" label="Select XLSX Files"
style="width: 150px;">
<div id="files" dojoType="dojox.form.uploader.FileList"
uploaderId="uploader" style="width: 300px;"></div>
<br /> <input type="submit" label="Submit"
dojoType="dijit.form.Button" id="submitId" />
</form>
<br>
<b>Result</b>
<div id="response"></div>
</body>
</html>
серверный код
@Path("fileupload2")public class FileUploadResource2 {
@POST
@Consumes("multipart/form-data")
@Produces("text/html")
public String loadFile(@Context HttpServletRequest request) {
String resultStatus="{response:'fail'}";
String fileRepository="C:\\TEMP\\";
if (ServletFileUpload.isMultipartContent(request)) {
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
List<FileItem> items = null;
try {
items = upload.parseRequest(request);
} catch (FileUploadException e) {
e.printStackTrace();
}
if(items!=null) {
Iterator<FileItem> iter = items.iterator();
while (iter.hasNext()) {
FileItem item = iter.next();
if(!item.isFormField() && item.getSize() > 0) {
String fileName = processFileName(item.getName());
resultStatus="{response:'ok.'}";
try {
//throw new Exception("error happened.");
item.write(new File(fileRepository+fileName));
} catch (Exception e) {
resultStatus="{response:'failed.'}";
//e.printStackTrace();
//return "{result:'" + e.fillInStackTrace() + "'}";
}
}
}
}
}
return resultStatus;
}
private String processFileName(String fileNameInput) {
String fileNameOutput=null;
fileNameOutput = fileNameInput.substring(fileNameInput.lastIndexOf("\\")+1,fileNameInput.length());
return fileNameOutput;
}
}