我的目标是上传文件,这是我的代码:
headers = {
'Some_Auth_Stuff': _get_ca_cert(ROLE),
'Host': host,
}
files = {'upload_file': file}
params = (
('op', 'create'),
('permission', '755')
)
r = requests.put(
'https://proxystuff.hostname.com/fs%s' % hue_path,
headers=headers, files=files, params=params)
if r.status_code == 201:
return True
return False
我正在上传这个文件:
i am a test file
我收到 201 响应,这很好,但是当我查看文件时,它看起来像这样:
--04dc34a8a49d4b83878473d6d78e683d
Content-Disposition: form-data; name="upload_file"; filename="testfile"
i am a test file
--04dc34a8a49d4b83878473d6d78e683d--
关于上传内容,我是否遗漏了什么?有什么方法可以禁止文件添加前缀和附加内容吗?
编辑: 如果我使用这个 curl 命令,它工作正常
curl -c cookie -b cookie -T "test.txt" "https://proxystuff.hostname.com/fs/user/stupidfatcat/test.txt?op=create&permission=755" -H "Some_Auth_Stuff:blahblah" -H "Host:someotherhost_with_hadoop.com:4443"
最佳答案
在尝试了一些东西之后,如果我把它改成
headers=headers, data=file.read(), params=params
并且我将 Content-Type 设置为纯文本/文本它工作正常,似乎它不喜欢文件参数。
关于hadoop - 通过 hdfs API 将文件上传到 hdfs 会导致文件被附加并预先加上签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45741809/