Django 实现简单文件上传

1. 功能
  1. 文件上传;
    2)页面展示上传时间;
    3)上传描述
  2. 多项目上传
2.前端代码


备注:


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("

文件已存在... 返回

") 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("

success...返回

") else: return HttpResponse("

上传失败...返回

") 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. 上传结果
image.png
Django 实现简单文件上传_第1张图片
image.png

你可能感兴趣的:(Django 实现简单文件上传)