3

Python でリクエスト ライブラリを使用して、localhost の Fedora コモンズ リポジトリにファイルをアップロードしようとしています。私の主な問題はopen()/read()と http リクエストでデータを送信するために何をする必要があるかを理解していないことだと確信しています。

def postBinary(fileName,dirPath,url):
    path = dirPath+'/'+fileName
    print('to ' + url + '\n' + path)
    openBin = {'file':(fileName,open(path,'rb').read())}
    headers = {'Slug': fileName} #not important
    r = requests.put(url, files=openBin,headers=headers, auth=HTTPBasicAuth('username', 'pass'))
    print(r.text)
    print("and the url used:")
    print(r.url)

これにより、リポジトリにファイルが正常にアップロードされますがファイルが少し大きくなり、後で破損します。たとえば、6.6kb の画像は 6.75kb になり、開くことができなくなりました。

では、Python で put を使用してファイルを適切に開いてアップロードするにはどうすればよいでしょうか。

###その他の詳細:###

  • に置き換えるfiles=openBinと、data=openBin最終的に辞書になり、データが文字列であると想定します。その情報が役立つかどうかはわかりません。
    "file=FILE_NAME.extension&file=TYPE89a%24%02Q%03%E7%FF%00E%5B%19%FC%....そしてファイルのサイズは数メガバイトに増加します

  • Fedora RESTful HTTP API エンドポイントが use と言うので、私は特に put を使用していますput

次のコマンドは機能します。

curl -u username:password -H "Content-Type: text/plain" -X PUT -T /path/to/someFile.jpeg http://localhost:8080/fcrepo/rest/someFile.jpeg

4

1 に答える 1