Python:相同的文件输出不同的二进制文件
我正试图通过对控制器的后端调用来呈现一个特殊的文件(.pkpass)。我想这部分是对的,我只想让我的控制器为我提供一个特定的文件,下面是代码Python:相同的文件输出不同的二进制文件,python,binary,pyramid,Python,Binary,Pyramid,我正试图通过对控制器的后端调用来呈现一个特殊的文件(.pkpass)。我想这部分是对的,我只想让我的控制器为我提供一个特定的文件,下面是代码 @view_config(name='pkpass', request_method='GET') def post_mobile(request): print('hitting') pkppass = open('/Users/jamthor/Downloads/good.pkpass','rb') pkread = pkppass.rea
@view_config(name='pkpass', request_method='GET')
def post_mobile(request):
print('hitting')
pkppass = open('/Users/jamthor/Downloads/good.pkpass','rb')
pkread = pkppass.read()
try :
res = Response(body=pkread, content_type = 'file/vnd.apple.pkpass;base64')
res.content_disposition = 'attachment; filename="test.pkpass"'
except Exception as e :
print(e)
finally:
pkppass.close()
return res
问题不在于提供文件;通过XMLHttpRequest下载文件后,无法打开该文件。我的第一个想法是关于一个损坏的二进制文件,因此我在编辑器中打开了原始文件(名为good.pkpass,它可以正常工作),并试图与我从应用程序获得的文件(名为test.pkpass)进行比较
问题是它们看起来几乎一样(虽然是二进制的),但我能发现一些差异(尽管它们很微妙,但在二进制中它意味着完全不同的东西)
我在下面附上了2个截图,你可以从光标所在的位置从左到右看到缺少的&
字符(从而证明确实存在差异)
我的问题是:为什么同一个文件会给我不同的二进制文件?因此,为什么原始文件可以很好地打开,而另一个却不能
我注意到您在
open()
中使用了'rb'
作为参数,其中b代表二进制。。你有没有试着简单地把它作为'r'
?@burnzZ如果我省略b
它是否与内容一起工作?\u type='application/octet stream'
?两个问题1)你如何提供文件-你的web服务器配置如何。解释所有涉及HTTP请求的层,如Apache、Nginx等。2)如何下载文件-是否使用命令行工具(如curl或wget)确认结果