我正在使用GWTUpload上传文件。我正在获取服务器信息、文件名、内容类型等。在onFinishHandler中,但是没有将文件内容从服务器端获取到客户端的选项。
注意:我正在尝试上传XML文件和EXCEL文件
我使用的是GWT2.4、GXT3.0.1、GWTUpload 0.6.6
以下是示例代码
客户端代码- OnFinishHandler
u.addOnFinishUploadHandler(new OnFinishUploaderHandler() {
@Override
public void onFinish(IUploader uploader) {
if (uploader.getStatus() == Status.SUCCESS) {
System.err.println(uploader.getServerResponse());
UploadedInfo info = uploader.getServerInfo();
System.out.println("File name " + info.name);
System.out.println("File content-type " + info.ctype);
System.out.println("File size " + info.size);
System.out.println("Server message " + info.message);
}
}
});Servlet代码
public class GWTFileUploadServlet extends UploadAction {
private static final long serialVersionUID = -6742854283091447922L;
String fileContent;
File uploadedFile;
@Override
public String executeAction(HttpServletRequest request,
List<FileItem> sessionFiles) throws UploadActionException {
String response = "";
int cont = 0;
for (FileItem item : sessionFiles) {
if (false == item.isFormField()) {
cont++;
try {
File file = File.createTempFile("upload-", ".bin");
item.write(file);
uploadedFile = file;
fileContent = item.getContentType();
response += "File saved as " + file.getAbsolutePath();
} catch (Exception e) {
throw new UploadActionException(e.getMessage());
}
}
}
removeSessionFileItems(request);
return response;
}
@Override
public void getUploadedFile(HttpServletRequest request,
HttpServletResponse response) throws IOException {
if (fileContent != null && !fileContent.isEmpty()) {
response.setContentType(fileContent);
FileInputStream is = new FileInputStream(uploadedFile);
copyFromInputStreamToOutputStream(is, response.getOutputStream());
} else {
renderXmlResponse(request, response, XML_ERROR_ITEM_NOT_FOUND);
}
}
}请帮帮我...
发布于 2013-08-21 02:36:41
您可以在调用item.write(...)时读取在文件系统中创建的文件,但最好从接收到的FileItem获取InputStream,并将其内容写到任何地方。例如,如果内容是一个String,您可以使用StringWritter来获取它:
InputStream inputStream = item.getInputStream();
StringWriter writer = new StringWriter();
IOUtils.copy(inputStream, writer);
String theContentString = writer.toString();编辑过的
为了在客户端获取文件的内容,您必须使用任何方法从服务器检索它:
如果文件的内容是ascii,则在gwtupload servlet中使用
executeAction.RequestBuilder调用,以使用上传器URL值获取文件。在现代浏览器中,您可以在客户端获取文件的内容,而无需将其发送到服务器端。看一看lib-gwt-file
发布于 2013-08-21 03:24:59
在您的代码中,您可以只使用
文件;byte[] = item.get();
您将在" file“变量中获得编码格式的所有文件内容。
https://stackoverflow.com/questions/18338972
复制相似问题