【问题标题】:file upload encoding troubles with the file name. GWT文件上传编码问题与文件名有关。 GWT
【发布时间】:2013-02-21 02:39:17
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    request.setCharacterEncoding("UTF-8");
    

    【讨论】:

    • 感谢您的回答。不幸的是,我无法再访问代码和此文件了。
    【解决方案2】:

    您是否尝试在 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 处理有问题

    【讨论】:

    • 是的,我试过(通过 eclipse 插件,GEP),但在本地机器上它工作正常。我使用应用引擎 SDK 1.7.4。
    • 我也不认为这是错误的:blobstore 上的 unicode 处理,因为在 Firefox 中一切正常,并且 blobstor 是服务器端的部分。但可能我错了。
    猜你喜欢
    • 2012-06-04
    • 1970-01-01
    • 2011-06-28
    • 1970-01-01
    • 1970-01-01
    • 2019-12-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多