使用TWebRequest(isapi应用程序)接收包含一个或多个文件的POST
/multipart/form-data
请求。
当文件名包含%
符号(例如,“Sales % by date.doc
”)时,解析请求时会生成异常(例如,使用request.contentfields.count
、request.extractcontentfields()
)。唯一的例外是
位置xx处的URL编码字符(% B)无效
或类似的(取决于文件名)。
我尝试拦截文件名并进行更正(例如"Sales %25 by date.doc"
),但无法设置Request.Content
并进行解析。
我尝试在提交客户端(浏览器)表单之前拦截并重命名该文件,但浏览器对<input type=file>
标记进行了限制。
有没有办法改变文件名的解码方式?这是11中修复的错误吗?任何其他提示/技巧将不胜感激。
1条答案
按热度按时间67up9zun1#
我能够通过访问Web.HTTPApp.pas中的TWebRequest源代码并修改ExtractHeaderFields过程中的代码来解决这个问题。在该过程中,有一个未捕获的TNetEncoding.URL.Decode()示例。我在寻找的行为:如果在Decode操作中出现异常,我希望它在不修改字符串的情况下正常退出。所以,原始代码是:
字符串
我修改为:
型
这解决了我的问题。