文件上传编码问题与文件名。 GWT

时间:2013-03-06 10:42:08

标签: java google-app-engine google-chrome gwt blobstore

当我尝试在我的gwt项目(gae上的服务器)上传文件时遇到问题。我有FormUpload(com.google.gwt.user.client.ui.FormPanel)结束FileUpload(com.google.gwt.user.client.ui.FileUpload),当然还有服务器端。 问题是当我尝试上传图像时,其名称包含“ó”等图表。但这很奇怪,因为当我在“ó”上手动更改“ó”时它可以工作(删除旧的ó并从我的键盘输入new,我的图像来自另一个人通过邮件发送)。

在我的formPanel上,我有:

setEncoding(FormPanel.ENCODING_MULTIPART);
setMethod(FormPanel.METHOD_POST);

我也托盘:

setEncoding(FormPanel.ENCODING_MULTIPART+"; charset=UTF-8");

在服务器上我有:

Map<String, List<BlobKey>> uploads = blobstoreService.getUploads(request);

并且上传大小为0。

我也尝试弃用方法:

blobstoreService.getUploadedBlobs(request);

同样奇怪的是,我可以使用Firefox上传相同的图像,但在Chrome,Safari和Opera上我不能这样,也许它的浏览器错误(错误)。

有没有人像我一样有类似的问题?我正在努力解决这个问题,我不知道如何解决这个问题。

2 个答案:

答案 0 :(得分:1)

我找到了一个解决方案,您必须设置表单和请求字符集的已接受字符集。

因此,在创建formpanel的视图/复合中,添加:

FormElement.as(formPanel.getElement()).setAcceptCharset("UTF-8");

在服务器端,处理请求时设置请求:

request.setCharacterEncoding("UTF-8");

答案 1 :(得分:0)

你是否尝试在dev_appserver中运行它并注意到任何错误?

我也遇到了类似的错误(不完全发生在文件名上,但是在上传时提交的表单字段中),这就是问题https://code.google.com/p/googleappengine/issues/detail?id=9420&can=4&colspec=ID%20Type%20Component%20Status%20Stars%20Summary%20Language%20Priority%20Owner%20Log

我猜测blobstore上的unicode处理有问题