3

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

在我的表单面板上,我有:

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 上我不能,所以可能是它的浏览器错误(错误)。

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

4

2 回答 2

1

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

因此,在您创建表单面板的视图/合成中,添加:

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

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

request.setCharacterEncoding("UTF-8");
于 2014-12-30T22:30:03.633 回答
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 处理有问题

于 2013-06-25T09:19:31.123 回答