2017-06-02 58 views
-6

我有一个Rails应用服务器。我想建立一个上传图片的Python客户端。如何使用python-request在Rails应用上发布文件

我想要做这样的事情:

def add_photo(entry_id, image_path): 

    return requests.post(
     url  = URL, 
     headers = HEADER, 
     json = { 
      'entry': { 
       'entry_id': entry_id, 
      } 
     }, 
     files = { 
      "entry['photo']": (
       os.path.basename(image_path), 
       open(image_path, 'rb'), 
       'image/jpg', 
       {'Expires': '0'} 
      ) 
     } 
    ) 

我需要嵌套到“项”键的图像。以上代码无效,因为密钥"entry['photo']"无效。

我该怎么做?

非常感谢您的帮助!

+0

如果你要向下投票这个, 请告诉我为什么?谢谢! – JPN

+0

目前尚不清楚你要求什么。你想看看接受图像的Rails代码,或者发送它的Python代码,或者两者兼而有之?如果您描述了您尝试了哪些内容,特别是您是否受到了障碍,并且您收到了任何错误消息,这也会有所帮助。 – Troy

+0

让我知道问题编辑是否清楚。谢谢! – JPN

回答

0

我想通了:

def add_photo(entry_id, image_path): 

    return requests.post(
     url  = URL, 
     headers = HEADER, 
     files = { 
      'entry[entry_id]': (None, entry_id, 'text'), 
      'entry[photo]': (os.path.basename(image_path), open(image_path, 'rb'), 'image/jpg', {'Expires': '0'}) 
     } 
    ) 
0

评论:我需要的图片的关键是进入[“照片”。

你想要做的结果无效dict什么。以下是从docs.python-requests.org

files = {'photo': ('test.jpg', open('test.jpg', 'rb'), 'image/jpg', {'entry_id': entry_id, 'Expires': '0'})} 

从这么回答Upload Image using POST form data in Python-requests

files = {'media': open('test.jpg', 'rb')} 
requests.post(url, files=files) 
+0

在这个例子中,图像的关键是'media'。我需要图像的关键是'进入'['照片']'。我需要这个图像是两层深的。 – JPN

+0

是的,无效的字典...这是问题所在。我如何解决这个问题? – JPN

相关问题