2016-07-23 48 views
0

我想將下載的圖像保存爲如下所示的路徑:media/images/[user.pk] /直接從urllib庫中的urlretrieve發送,這是可能的,什麼是最優雅的方式?如何在django媒體文件中創建目錄(最佳方式)?

這是所使用的代碼片段:

  • 這裏我用urlretrieve與路徑一樣... /媒體/圖像/ [user.pk]/[filename.jpg]

    file_path, header = urlretrieve(image_url, os.path.join(
            MEDIA_ROOT, get_image_path(
             self, 'profile_image_'+str(
             datetime.utcnow().strftime("%Y%m%d_%H%M"))+'.jpg 
    
  • 下面是定義的函數,與文件名

    def get_image_path(instance, filename): 
        return os.path.join('images', str(instance.pk), filename) 
    
0123返回期望的路徑

,當我跑我得到一個錯誤,因爲該文件不存在:

FileNotFoundError在/ REST /的oauth2 /谷歌 [錯誤2]沒有這樣的文件或目錄:「C:\ XAMPP \ htdocs中\ BookProjectFresh \媒體\ images \ 21 \ profile_image_20160723_0801.jpg'

我知道我可以通過首先將文件加載到臨時文件夾中,然後從那裏加載並放入django模型來實現該目的,如果它不存在,它會自動創建文件路徑,但後來我有兩個文件在我的電腦上有相同的內容。或者將是與os.path.makedirs做到這一點的最好方法?請如果你知道任何其他方式分享它。

回答

0

我解決的問題等這樣:

def save_image_from_url(self, image_url): 
     if self.profile_image_url != image_url or not os.path.isfile(self.profile_image.path): 
      if not os.path.exists(get_image_path(self, os.path.join(MEDIA_ROOT, get_image_path(
       self, '')))): 
       os.makedirs(get_image_path(self, os.path.join(MEDIA_ROOT, get_image_path(
       self, '')))) 

      self.profile_image_url = image_url 

      file_path, header = urlretrieve(image_url, os.path.join(MEDIA_ROOT, get_image_path(
       self, 'profile_image_'+str(datetime.utcnow().strftime("%Y%m%d_%H%M"))+'.jpg'))) 

      self.profile_image = file_path 
      self.save() 
相關問題