0

我有一個圖像URL(例如:http://www.myexample.come/testImage.jpg),我會使用Django將此圖像上傳到Amazon S3。使用Django從圖像URL複製Amazon S3中的圖像

我沒有找到直接從Amazon S3中的URL直接複製文件URL的方法。

所以,我認爲,我要實現我的項目下列步驟操作:

  1. 從URL http://www.myexample.come/testImage.jpg本地下載的文件。我將有一個本地文件testImage.jpg

  2. 我必須將本地文件上傳到Amazon S3。我將擁有一個S3 Url。

  3. 我不得不刪除本地文件testImage.jpg

這是建立此功能的好方法嗎?

是否可以改進這些步驟?

我有,當我收到一個REST請求中使用這個功能,我要傳遞的響應上傳的S3文件的URL迴應...難道這些步驟對性能的好辦法?

回答

0

最簡單的方法就是使用requestsio從python std庫 - 這是我稍後使用的一段代碼,我只是用python 2.7.9測試它,它工作

>>> requests_image('http://docs.python-requests.org/en/latest/_static/requests-sidebar.png') 

,並與請求的最新版本(2.6.0)的作品 - 但我要指出的是,這只是一個片段,我是在圖像的URL的完全控制權被交給功能,所以沒有任何錯誤檢查的方式(你可以use Pillow to open the image and confirm it's really a jpeg等)

import requests 
from io import open as iopen 
from urlparse import urlsplit 

def requests_image(file_url): 
    suffix_list = ['jpg', 'gif', 'png', 'tif', 'svg',] 
    file_name = urlsplit(file_url)[2].split('/')[-1] 
    file_suffix = file_name.split('.')[1] 
    i = requests.get(file_url) 
    if file_suffix in suffix_list and i.status_code == requests.codes.ok: 
     with iopen(file_name, 'wb') as file: 
      file.write(i.content) 
    else: 
     return False 
+0

提交我的回答後,我覺得有點內疚,我沒有指出有關使用枕頭的鏈接實際上進入到一個名爲教程「上傳和驗證將圖像從一個網址使用Django」這可能是更符合你也許正在尋找。 http://timmyomahony.com/blog/upload-and-validate-image-from-url-in-django/ github回購:https://github.com/timmyomahony/django-blog-examples/tree /主/ image_uploader – 2015-03-19 02:49:50