Jet API批量JSON上传:GZip标头中的幻数不正确

时间:2016-08-24 23:03:59

标签: python python-requests jet.com-apis

我试图直接联系Jet并被告知“尝试使用7zip来压缩文件”然后没有收到进一步的回复(尽管还有其他问题)。

这是错误代码:

"error_excerpt": [
    "Error parsing file: The magic number in GZip header is not correct. Make sure you are passing in a GZip stream."
  ],

以下是我正在尝试的内容:

def file_upload_url(self, url, filename, data):
    headers = {"x-ms-blob-type": "blockblob"}
    magic_number = open(filename, 'rb').read(2) # shows that magic number is correct for .gz file
    print `magic_number`
    with open(filename, 'rb') as f:
        file_data=f.read()
    response = requests.put(url, headers=headers, files={ "test.json.gz": file_data }) 
    # i've also tried data={"test.json.gz": file_data}

然后你用另一个电话检查。该文件是从Ubuntu命令行中删除的(以排除导致问题的Python的gzip模块)。

以下是提供的文档:https://developer.jet.com/docs/

我已经实现了所有其他功能,没有丝毫打嗝,但这只是不起作用。我唯一能想到的是我以某种方式错误地发送文件数据。但我似乎无法弄清楚如何。

.json文件已被确认为Jet代表有效。

1 个答案:

答案 0 :(得分:2)

找出答案。必须确保只在请求中的data参数内放置二进制数据(不是字典,如文件)。

制作:

def file_upload_url(self, url, filename, data):
    headers = {"x-ms-blob-type": "blockblob"}
    with open(filename, 'rb') as f:
        file_data=f.read()
    response = requests.put(url, headers=headers, data=file_data) 

很好,也很容易。