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