1. 功能
- 文件上傳;
2)頁(yè)面展示上傳時(shí)間;
3)上傳描述- 多項(xiàng)目上傳
2.前端代碼
<! -- 定義表單明郭,以及上傳請(qǐng)求url鳄厌,上傳方式,類(lèi)型-->
<form action="/FileUpload/" method="post" enctype="multipart/form-data">
<!-- 選擇文件 -->
<input type="file" name="file">
</br>
<!-- 輸入描述 -->
備注:<input type="text" name="content">
<br>
</br>
<!-- 項(xiàng)目選擇框 -->
<select class="form-control select1" name="proname" style="width: 40%">
{% for m in prolist %}
<option class="project-name" value="{{ m.Name }}" name="name">{{ m.Name }}</option>
{% endfor %}
</select>
</br>
<!-- 上傳按鈕 -->
<input type="submit" value="上傳">
</form>
3.后臺(tái)代碼
app目錄下新建form.py
from django import forms
class UploadFileForm(forms.Form):
# title = forms.CharField(max_length=50)
file = forms.FileField()
views.py :
def upload_file(request):
if request.method == 'POST':
form = UploadFileForm(request.POST, request.FILES)
print form
if form.is_valid():
print "valid"
if FileInfo.objects.filter(FileName=request.FILES['file'].name):
return HttpResponse("<p color='red'>文件已存在... <a href='/upload/'>返回</a></p>")
else:
file_model = FileInfo()
file_model.FileName = request.FILES['file'].name
file_model.FileField = form.cleaned_data['file']
file_model.Content = request.POST['content']
file_model.project_id = Project.objects.get(Name=request.POST['proname']).id
file_model.UpdateTime = int(time.mktime(time.strptime(time.strftime('%Y-%m-%d %H:%M:%S'),"%Y-%m-%d %H:%M:%S")))
file_model.save()
return HttpResponse("<p >success...<a href='/upload'>返回</a></p>")
else:
return HttpResponse("<p>上傳失敗...<a href='/upload/'>返回</a></p> ")
else:
form = UploadFileForm()
return render(request, 'upload.html', {'form': form})
def handle_uploaded_file(f):
with open(f.name, 'wb+') as destination:
for chunk in f.chunks():
destination.write(chunk)
models.py:
這里重新定義了upload_to函數(shù)哩掺,使其可以針對(duì)不同項(xiàng)目,放到不同目錄下:
from django.conf import settings
def upload_to(instance, filename):
return '/'.join([settings.MEDIA_ROOT, time.strftime('%Y'),time.strftime('%m'), time.strftime('%d'),str(instance.project_id), filename])
4. 上傳結(jié)果
image.png
image.png