2013-06-28 42 views
0

我需要複製文件:將文件複製到STATIC-DIR

<form action="test_edit_info" method="POST" enctype="multipart/form-data"> 
    {%csrf_token%} 
    <input type="file" name="avatar"> 
    <input type="submit" value="Register"/> 
</form> 

靜態 -dir (剛剛從形式複製文件中的模板分爲靜態)

視圖

def test_edit_info(request): 
if request.method == "POST" : 
    new_ava = request.FILES['avatar'] 
    print "new ava: ",new_ava #return file-name 
c = {} 
c.update(csrf(request)) 
return render(request, "test_edit_personal_information.html") 

剛剛從模板複製文件的靜態目錄。沒有任何形式和模型。請幫助,請。謝謝。

回答

0

第一件事,static dir就像它的名字說:STATIC。它只包含像自定義js,靜態圖像,CSS等靜態文件...

如果你想上傳文件,你應該使用media目錄。

的觀點: 不要忘了導入設置

from django.conf import settings 

if request.method == 'POST': 
    if 'avatar' in request.FILES: 
     file = request.FILES['avatar'] 

     # Other data on the request.FILES dictionary: 
     # filesize = len(file['content']) 
     # filetype = file['content-type'] 

     filename = file['filename'] 

     fd = open('%s/%s' % (settings.MEDIA_ROOT, filename), 'wb') 
     fd.write(file['content']) 
     fd.close() 

     #return ... 
0

THX,但有錯誤: 'InMemoryUploadedFile' 對象有沒有屬性 '的GetItem' 名=文件[ '名']

那麼,這是怎麼回事?

from django.core.files.storage import default_storage 
from django.core.files.base import ContentFile 
def test_edit_info(request): 
    if request.method == 'POST': 
     if 'avatar' in request.FILES: 
      file = request.FILES['avatar'] 
      default_storage.save("E:/reg_extend_2/static/img/avatars/%s"%(file), ContentFile(file.read())) 
    c = {} 
    return render(request, "test_edit_personal_information.html") 
+0

但也許你有批評?謝謝。 – lov3catch

+0

如果這項工作,它是完美的。只需使路徑更通用,使用MEDIA_ROOT即可,並且不要將文件上傳到靜態文件夾。 – Mounir