django文件上傳及接收存儲的方法如下:
1, 表單:
<form action="/student/addsave" method="post" class="form" enctype="multipart/form-data"> {% csrf_token %} <li> <input type="file" name="file"> </li> <li> <input type="submit" value="保存"> </li> </form>
2, view接收
myFile = request.FILES["file"] if myFile: list = myFile.name.split(".") ext = list[-1] newname = uuid.uuid1().hex + "." + ext ext_tup = ("gif","png","jpeg","jpg") if ext not in ext_tup: return HttpResponse("<script>alert('只能上傳圖片');history.back();</script>") path = makedirs() imgname = '%s/%s' % (path, newname) destination = open(imgname,'wb+') for chunk in myFile.chunks(): destination.write(chunk)
處理上傳的文件
關(guān)于上傳文件的方法和屬性:
myFile.read():從文件中讀取整個上傳的數(shù)據(jù),這個方法只適合小文件;
myFile.chunks():按塊返回文件,通過在for循環(huán)中進(jìn)行迭代,可以將大文件按塊寫入到服務(wù)器中;
myFile.multiple_chunks():這個方法根據(jù)myFile的大小,返回True或者False,當(dāng)myFile文件大于2.5M(默認(rèn)為2.5M,可以調(diào)整)時,該方法返回True,否則返回False,因此可以根據(jù)該方法來選擇選用read方法讀取還是采用chunks方法:
if myFile.multiple_chunks() == False:
# 使用myFile.read()
else:
# 使用myFile.chunks()
myFile.name:這是一個屬性,不是方法,該屬性得到上傳的文件名,包括后綴,如123.exe;
myFile.size:這也是一個屬性,該屬性得到上傳文件的大小。
相關(guān)鏈接: 生成年月日目錄函數(shù)