2016-07-27 15 views
0

同じネットワーク上に2台のコンピューターがあり、より大きなプロジェクトのコンテキストで、pythonを使用して1台のコンピューターから別のコンピューターにファイルを渡そうとしています。ファイルをPythonでボトルサーバーにアップロード

:私のような要求ライブラリを通じてファイルを送信しようとしている クライアント側で

import bottle 
import json 

@bottle.hook('after_request') 
def enable_cors(): 
    """ 
    You need to add some headers to each request. 
    Don't use the wildcard '*' for Access-Control-Allow-Origin in production. 
    """ 
    bottle.response.headers['Access-Control-Allow-Origin'] = '*' 
    bottle.response.headers['Access-Control-Allow-Methods'] = 'PUT, GET, POST, DELETE, OPTIONS' 
    bottle.response.headers['Access-Control-Allow-Headers'] = 'Origin, Accept, Content-Type, X-Requested-With, X-CSRF-Token' 

# LANDING (IT IS NOT REALLY NEEDED JUST TO CHECK STUFF) 
@bottle.route('/', method='GET') 
def root(): 
    return { 
     'api': 'api/' 
    } 

@bottle.route('/api', method='POST') 
def upload(): 
    upload = bottle.request.files.get('file') 
    print upload.filename 
    upload.save('input.txt') 

if __name__ == '__main__': 
    bottle.run(host='0.0.0.0', port=8080, debug=True) 

:私は、次のボトルのスクリプトを持っているサーバー側で

import sys 
import requests 

r = requests.post('http://ip:port/api/', files={'file': open(sys.argv[1], 'rb')}) 
print r 

ipおよびポート)。

このエラーが発生していますが、これはどのように処理するかわかりません。

Traceback (most recent call last): 
    File "loopmatch.py", line 4, in <module> 
    r = requests.post('http://ip:port/api/', files={'file': open(sys.argv[1], 'rb')}) 
    File "/usr/local/lib/python2.7/site-packages/requests/api.py", line 111, in post 
    return request('post', url, data=data, json=json, **kwargs) 
    File "/usr/local/lib/python2.7/site-packages/requests/api.py", line 57, in request 
    return session.request(method=method, url=url, **kwargs) 
    File "/usr/local/lib/python2.7/site-packages/requests/sessions.py", line 475, in request 
    resp = self.send(prep, **send_kwargs) 
    File "/usr/local/lib/python2.7/site-packages/requests/sessions.py", line 585, in send 
    r = adapter.send(request, **kwargs) 
    File "/usr/local/lib/python2.7/site-packages/requests/adapters.py", line 453, in send 
    raise ConnectionError(err, request=request) 
requests.exceptions.ConnectionError: ('Connection aborted.', error(32, 'Broken pipe')) 

ご協力いただければ幸いです。
ありがとうございます!

+1

そこに問題はありません...間違いなく動作するはずです...プロキシの後ろを走っていますか? pycをきれいにして、必要に応じてpidを閉じて、実行するipポートがフリーであることを確認してください。 –

+0

これらの点については、まったく問題はありません。 * root *ルートは、それらの問題を評価できるように設定されています。私は間違いが何かを見た。しかし、あなたの答えをありがとう! – jaumebonet

答えて

0

そう...事はただ、他の誰かがこの愚かな過ちをstomps場合には、ここで答えを残して...かなり愚かです...

bottle.routerequests.urlと正確に一致する必要があります。URLは、彼らが働いていなかった理由は...これはapi/あった5月の場合は、ルートapiだった...

一つはapi/またはapiの両方に移動する必要があります。

+1

Cool。実際には、HTTP仕様に従って、 '/ api'と'/api/'が* different *パスであるからです。それらが同等であることを考慮すると、BottleやWebフレームワークで深刻な問題になります。 –

関連する問題