1. 功能
- 文件上传;
2)页面展示上传时间;
3)上传描述- 多项目上传
2.前端代码
<! -- 定义表单,以及上传请求url,上传方式,类型-->
<form action="/FileUpload/" method="post" enctype="multipart/form-data">
<!-- 选择文件 -->
<input type="file" name="file">
</br>
<!-- 输入描述 -->
备注:<input type="text" name="content">
<br>
</br>
<!-- 项目选择框 -->
<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.后台代码
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函数,使其可以针对不同项目,放到不同目录下:
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. 上传结果


网友评论