2013-01-13 35 views
0

但是,目前我通過掛鉤Filefield所在模型的保存方法生成圖像上傳的縮略圖,但由於很多原因,這真的很糟糕。它確實工作,雖然不像我以前的自定義上傳處理程序的實驗...從Django的自定義上傳處理程序中獲取文件上載的最終目的地

這罷工我作爲創建和更新縮略圖的適當接合點,但我試圖找出上傳的文件最終將保存在哪裏所以我可以將縮略圖保存到基於此的路徑)。我可以很容易地獲得臨時文件夾路徑,但這是沒用的,我需要知道上傳最終會上傳到哪個文件夾,這是可能的嗎?

class Thumbnailer(TemporaryFileUploadHandler): 
    def file_complete(self, file_size): 
     self.file.seek(0) 
     if not self.content_type is None and 'image' in self.content_type: 
      newfile = StringIO() 
      img = Image.open(self.file) 
      thumb_size = 400,300 
      img.thumbnail(thumb_size, Image.ANTIALIAS) 
      img.save(os.path.join("THIS PATH IS WHAT I NEED", "thumbs", self.file_name, 'JPEG', quality=80) 
    return super(Thumbnailer, self).file_complete(file_size) 

PS:請不要通過推薦的插件和混合插件的拇指釘回答 - 我知道和漠視所有這些,這個項目至少..

回答

1

文件上傳處理不知道上傳文件的存儲位置,所以如果你真的需要自定義上傳處理程序,你必須硬編碼該路徑。

否則,您可以:

  • 自定義視圖得到tumbnal(產生於第一次請求縮略圖,就像SORL一樣)
  • 店,在設置路徑
  • 定製的FileField
+0

我同意它似乎並不知道,但你確定沒有辦法解決它嗎?我覺得應該有一種方法來獲得處理程序所關聯的模型和字段名稱。我會進一步研究一下。同時你知道django是否有其他的鉤子或觸發器,當文件上傳發生時被調用? – technicalbloke

+0

其實只是重新閱讀你的答案,其中兩個看起來很有前途 - 謝謝! – technicalbloke