0

私は、外部のクライアントが処理されるバイナリファイルを送信できるようにするAPIを開発しています。私のweb.data()は文字列であり、呼び出している関数にはバイナリが必要です。どうすれば正しい形式にできますか?たぶん私は間違ったヘッダーを持っていますか?バイナリデータを抽出するにはどうすればよいですか。web.pyを使用しています。

-----------------POSTリクエスト------------------------------- ---------------------

import json
import requests



files = {'file':('000038fe4b46c210c37bdde767835007', open('000038fe4b46c210c37bdde767835007', 'rb'))}
headers = {'content-type' : 'application/octet-stream',  'X-Auth-Token':'xxxf'}
r = requests.post('http://XXX:8080/v1/binaries', files = files, headers = header

-----------------------API関数------------------------- -----

  def POST(self):
                a = web.ctx.env.get("HTTP_X_AUTH_TOKEN", None)
                creds = authenticator(a)
                postdata = web.data().read()
                analysis = atklite.FileAnalysis(data=postdata)
                metadata = analysis.return_analysis()

------------------------トレースバック------------------------- -------

  File "/usr/lib/pymodules/python2.7/web/application.py", line 242, in process
    return self.handle()
  File "/usr/lib/pymodules/python2.7/web/application.py", line 233, in handle
    return self._delegate(fn, self.fvars, args)
  File "/usr/lib/pymodules/python2.7/web/application.py", line 415, in _delegate
    return handle_class(cls)
  File "/usr/lib/pymodules/python2.7/web/application.py", line 390, in handle_class
    return tocall(*args)
  File "/home/XXXXXX/ProcessingCode/bfsapi.py", line 75, in POST
    postdata = web.data().read()
AttributeError: 'str' object has no attribute 'read'

ありがとう

投稿でフォーマットがすべて台無しになってしまった場合は申し訳ありません。

4

1 に答える 1

0

バイナリファイルであっても、生の投稿データを読み取ると、エンコードされた文字列が取得されます。バイナリデータに変換するには、デコードする必要があります。次のようにファイルに書き込むことができます。

 written = open('binary.file', 'wb')
 for chunk in rawdata.chunks():
        written.write(chunk)
 written.close()
于 2012-06-21T13:52:28.480 に答える