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

Jet API bulk JSON upload: The magic number in GZip header is not correct

我试图直接联系 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/

我已经毫不费力地实现了所有其他功能,但这就是行不通。我唯一能想到的就是我以某种方式错误地发送了文件数据。但我似乎无法弄清楚如何。

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

找到答案了。必须确保只将二进制数据(不是字典,如文件)放入请求的数据参数中。

成功:

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) 

简单易用。