Я создал виджет загрузки файла, используя UI.xml.Письменный сервлет.Мой сервлет вызывает, но содержимое файла не извлекается.Я вставил свой код здесь.Можете ли вы ответить, в чем проблема и как получить содержимое?Это первый раз, используя это.Пожалуйста, дайте мне знать.
Интерфейс пользователя
<g:FormPanel ui:field="uploadDPAFormPanel">
<g:HorizontalPanel>
<g:Label> File
Upload: </g:Label>
<g:FileUpload ui:field="fileUpload" />
<g:Button ui:field="uploadButton" title="Upload"
Upload</g:Button>
</g:HorizontalPanel>
</g:FormPanel>
Ниже приведен мой класс инструмента:
@UiHandler("uploadButton")
void onClickUploadButton(ClickEvent event) {
GWT.log("You selected: " + fileUpload.getFilename(), null);
uploadDPAFormPanel.submit();
}
public void init() {
uploadDPAFormPanel.setEncoding(FormPanel.ENCODING_MULTIPART);
uploadDPAFormPanel.setMethod(FormPanel.METHOD_POST);
uploadDPAFormPanel.setAction(GWT.getHostPageBaseURL()
+ uploadServlet);
uploadDPAFormPanel.addSubmitHandler(new FormPanel.SubmitHandler() {
@Override
public void onSubmit(SubmitEvent event) {
if (!"".equalsIgnoreCase(fileUpload.getFilename())) {
GWT.log("UPLOADING FILE????", null);
// NOW WHAT????
}
else{
GWT.log("UPLOA event cancel");
event.cancel(); // cancel the event
}
}
});
uploadDPAFormPanel
.addSubmitCompleteHandler(new FormPanel.SubmitCompleteHandler() {
@Override
public void onSubmitComplete(SubmitCompleteEvent event) {
//TODO need to write code to refresh the page
doAlert("Uploaded sucessfully");
}
});
}
Ниже приведен мой класс сервлета:
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
ServletFileUpload upload = new ServletFileUpload();
log.debug("UploadServlet upload:"+upload);
try {
FileItemIterator iter = upload.getItemIterator(request);
log.debug("UploadServlet iter:"+iter);
System.out.println("UploadServlet iter:"+iter);
while (iter.hasNext()) {
FileItemStream item = iter.next();
log.debug("UploadServlet iter:Field Name:"+item.getFieldName());
System.out.println(":Field Name:"+item.getFieldName());
System.out.println(":Name:"+item.getName());
System.out.println(":is form field:"+item.isFormField());
String name = item.getFieldName();
InputStream stream = item.openStream();
// Process the input stream
ByteArrayOutputStream out = new ByteArrayOutputStream();
int len;
byte[] buffer = new byte[8192];
while ((len = stream.read(buffer, 0, buffer.length)) != -1) {
out.write(buffer, 0, len);
}
int maxFileSize = 10 * (1024 * 2); // 10 megs max
if (out.size() > maxFileSize) {
throw new RuntimeException("File is > than " + maxFileSize);
}
}
} catch (Exception e) {
throw new RuntimeException(e);
}
}