我在尝试将文件发布为" multipart / form-data"时遇到特殊字符问题。当我尝试发布带有特殊字符的文件时,帖子中缺少该文件。没有特殊字符我的脚本工作得很好。
我该如何处理文件名?
工作正常:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup name="wix.bootstrapper" type="Microsoft.Tools.WindowsInstallerXml.Bootstrapper.BootstrapperSectionGroup, BootstrapperCore">
<section name="host" type="Microsoft.Tools.WindowsInstallerXml.Bootstrapper.HostSection, BootstrapperCore" />
</sectionGroup>
</configSections>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<wix.bootstrapper>
<host assemblyName="VerySimpleBurnApp">
<supportedFramework version="v4.5" />
</host>
</wix.bootstrapper>
</configuration>
将空数据作为文件发布:
r = requests.post('http://localhost/upload.ws', files={'file': open('test.txt')}, data=param, auth=HTTPBasicAuth('user', 'pass'))
答案 0 :(得分:0)
尝试将字符串转换为unicode,如下所示:
r = requests.post('http://localhost/upload.ws', files={'file': open(u'test_äöå.txt')}, data=param, auth=HTTPBasicAuth('user', 'pass'))
或者如果名称在变量中,请执行以下操作:
r = requests.post('http://localhost/upload.ws', files={'file': open(filename.decode('utf8'))}, data=param, auth=HTTPBasicAuth('user', 'pass'))
它不是请求库的问题,python默认情况下不会将字符串视为unicode,因此无法打开文件(它将其名称视为ascii字符)
答案 1 :(得分:0)
请求可能是从对象中错误地提取文件名。尝试将显式文件名作为unicode
传递:
..., files={'file': (u'test_äöå.txt', open('test_äöå.txt'))}, ...