我嘗試上傳圖片並創建它的縮略圖,並且都將其存儲在S3中。文件上傳完成後,我首先將其上傳到S3,然後嘗試創建縮略圖,但它不起作用,因爲PIL無法識別圖像。其次,如果我首先創建縮略圖,而不是在上傳原始圖像時獲得EOF。Django中的圖片上傳和操作
我認爲Django的僅允許一次上傳的文件只能使用一次....請請告訴我一個辦法做下去....提前
我嘗試上傳圖片並創建它的縮略圖,並且都將其存儲在S3中。文件上傳完成後,我首先將其上傳到S3,然後嘗試創建縮略圖,但它不起作用,因爲PIL無法識別圖像。其次,如果我首先創建縮略圖,而不是在上傳原始圖像時獲得EOF。Django中的圖片上傳和操作
我認爲Django的僅允許一次上傳的文件只能使用一次....請請告訴我一個辦法做下去....提前
嗯謝謝,你需要更具體與您的問題,但我們正在做同樣的事情和工作流程如下:
1)你從文件上傳request.FILES文件句柄,並將其存儲在本地文件系統的某個地方,所以你不要在流「T工作 - 這是我猜是造成你的問題
2)使用PIL(或更好,但枕頭)操縱上的圖像FS,調整大小,縮略圖,等等。
3)使用寶途(http://boto.cloudhackers.com/en/latest/)上傳到S3,因爲博託採用AWS的處理伸出你的雙手。
這是很簡單和行之有效的
是的。我認爲問題在於我正在處理流...但是會在本地存儲文件,而不是在工作和上傳後不會減慢整個過程? –
並沒有任何方法能夠使用流本身 –
嗯,一個流是一個流,所以你要麼複製它,要麼只是兩次調用pil.thumbnail而不使用兩次打開,這可能工作,但我不確定。至於放慢這個過程,是的,它會有一點點,如果它是一個問題(如果這是在管理頁面,然後擰開dealy,如果它在前端,並且你有數百人上傳圖片,然後使用django-celery或類似的東西) –
難道你的PIL安裝找到正確的庫編譯時。您可以嘗試卸載並用pip重新安裝。
看朝向編譯輸出的端部並有一個節詳述庫可用。
我花了很長時間試圖找出爲什麼沒有意識到這是找錯了地方之前發現我的JPEG,PNG/ZIP庫。
在Debian中,我需要下載PIL /枕頭來源並添加:
_add_directory(library_dirs, "/usr/lib/x86_64-linux-gnu")
到「標準位置」 settings.py文件的部分 - 這是安裝我libjpeg.so目錄到
然後我需要運行
python setup.py install
並檢查輸出,以確保它已經找到了正確的庫
希望這有助於
我終於想通了。問題在於它是一個上傳文件存儲到的流,所以每次我讀取它將到達EOF的文件。
唯一的,最好的出路是尋求(0)每次我們讀取該文件。
當在django中使用其他文件時,這也是需要的。
什麼不工作?你如何上傳到S3?如果您有權訪問文件對象,我不會看到什麼阻止您對其執行多個操作。只需在文件上搜索(0),以便將來的操作可以正確讀取()該文件。還有django-storage,但我認爲它在這些場景中掙扎着,因爲它被迫多次上傳/下載。客戶端 - > Django - > S3 - > Django - > S3。 –
「它不起作用,因爲PIL無法識別圖像」您怎麼知道? –