hadoop - 通过 hdfs API 将文件上传到 hdfs 会导致文件被附加并预先加上签名

标签 hadoop hdfs

我的目标是上传文件,这是我的代码:

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/

相关文章:

hadoop - 表在 Hive 中不可见

java - mac vist docker hadoop hdfs datanode失败

hadoop - 如何读取 Hadoop Sequentil 文件作为 Hadoop 作业的输入?

hadoop - zookeeper和kafka在hadoop 2.6集群中放在哪里

java - 用Java测试Hadoop HDFS

java - 基于HADOOP_HOME自动加载HDFS Configuration?

hadoop - 为什么在运行 hadoop(或 dfs 命令)时一直显示 deprecated 错误

Hadoop Basic - 创建目录时出错

hadoop - 调度具有输入参数的HBase Hadoop MR作业

java - Hive ClassNotFoundException 即使所有 jar 都添加到 Maven 存储库中