我正在使用泽西文件上传文件,但我只需要文件名。 Internet Explorer发送整个路径,并且根据FormDataContentDisposition中的内容,Jersey分析出斜杠,所以我甚至不能解析它。谢谢。如何获得只有泽西文件上传的文件名
回答
听起来像一个棘手的问题。理想的情况当然是抓住包含斜杠的字符串,并使用string.split!
如果失败了,我可以开始思考的唯一策略是尝试遍历字符串,看看文件夹是否存在字符串的第一部分的各种长度等。这可能会导致问题,但如果您打算查找一个文件夹“MyFolder(2)”,还有一个“MyFolder”。我不知道很多球衣,但我会建议试着找到一种不同的方式来抓住你需要的字符串。
- 更改事件添加到文件输入标签
- 解析出文件名,因为它仍然有在这一点上
- 棒斜线该值装入一个隐藏的输入
隐藏的输入,则与表单的其余部分一起提交。
@kombat已找到该解决方案并将其作为注释发布。为了更好,这是现在转贴为社区维基答案。
我在尝试Eclipse浏览器时遇到了该错误。当我在Chrome上试用我的代码时,FormDataContentDisposition.getFileName()很好。
这是泽西岛的一个bug。在Nabble讨论http://jersey.576304.n2.nabble.com/Jersey-truncating-the-slashes-from-the-uploaded-file-name-td5984041.html该错误的作者揭示了自己并承认'重新使用代码'来解析HTTP头部以解析Content-Disposition
。但是,引用的RFC 2616未指定,Content-Disposition
字段将根据为HTTP头指定的规则进行转义。正好相反,有撰文指出:
内容处置不是HTTP标准的一部分,但由于它 被广泛实施,我们将记录其使用和风险 实现者。
此错误早已在新泽西州的实际版本的类org.glassfish.jersey.media.multipart.internal.MultiPartReaderClientSide
一个丑陋的解决方法,但它不与IE 11和边缘,因为它会检查它已经改变了用户代理部分的工作。有一个修正请求:https://github.com/jersey/jersey/pull/233/files,但将近2年没有人关心合并它。
你有3个解决方案:
1)Aplly在客户端,这是恕我直言一种错误的做法,因为在客户端没有一个错误“修复”,这个bug是在泽西岛!
2)改变泽西其它框架,其中,所述开发人员采取的兼容性问题更严重的是代替集中手动最大化代码重用等等
3)修补泽西的。下载源代码,应用拉取请求,使用修改后的版本号进行编译和发布。
- 1. 如何获得MIME类型上传文件的泽西
- 2. 泽西岛文件上传
- 3. 如何获得上传的文件名
- 4. 泽西文件上传出错
- 5. 如何获得上传的文件名在PHP中,如果上传的文件使用AJAX jQuery文件上传
- 6. 如何获得上传的文件
- 7. 文件上传PHP中,只得到文件名
- 8. 如何获得前端的文件网址上传的文件
- 9. 泽西岛2.0客户端的文件上传失败
- 10. 与泽西岛和ExtJS文件上传的响应
- 11. Ajax上传 - 如何获取FormData文件名与原始文件的文件名
- 12. 如何获得泽西岛的房产?
- 13. 如何上传前用PHP来获得安全的文件名
- 14. 如何获得java servlet中的上传文件名?
- 15. 如何上传文件名?
- 16. MURA CMS:如何从上传文件的文件名获取fileId?
- 17. 如何获取上传文件的文件扩展名
- 18. 如何使用GAE获取上传文件的文件名?
- 19. 尝试上传文件到JAX-RS(泽西岛)服务器
- 20. 泽西岛上传文件时,我无法授权用户
- 21. 新泽西ApacheConnector多文件上传 - 无边界多发现
- 22. 泽西上传接收请求元而不是文件
- 23. 如何获得没有文件路径的文件名?
- 24. 使用blueimp上传文件上传东西blueimp文件上传
- 25. 如何获得多个文件在文件上传
- 26. 上传文件,但没有得到一个文件名
- 27. 如何上传具有不同文件名的文件
- 28. 获取文件的路径和文件名与ASP:文件上传,不想文件...只是路径和名称
- 29. 如何创建一个端点来在泽西岛上传文件?
- 30. 如何AngularJS NG-文件上传读文件上传文件名的警告框
谢谢。我最终做的是向文件输入标记添加一个更改事件,并在其中解析出文件名,因为此时它仍然有斜杠,并将该值保存到隐藏的输入中。随后隐藏的输入会与表单的其余部分一起提交。 – kombat
很高兴看到您能够解决它。 – Drifter64
添加这个问题的答案,而不是把它放在评论,所以它会更适用 –