django实现上传文件读取文件内容

1.models.py加入FILEFIELD文件表字段

class TestData(models.Model):
    name = models.CharField(max_length=200)
    data = models.FileField(upload_to=testdata/file, null=True, blank=True)
    img = models.ImageField(upload_to=testdata/image, null=True, blank=True)

    def __str__(self):
        return self.name

2.settings.py设置FILEFIELD的默认保存目录MEDIA_ROOT和默认链接目录MEDIA_URL

MEDIA_URL = data/
MEDIA_ROOT = data/

以上表示TestData的data上传后默认保存在项目根目录/data/testdata/file中,读取链接为域名/data/testdata/file/xxx.xxx

3.views.py加入文件试图:

def myfile(request, file_id):
    f = TestData.objects.get(id=file_id)
    # 建立TestData的表单对象
    FileForm = modelform_factory(TestData,fields=[name,data,img])
    if request.method == POST:
        # 提交的文件保存到f对象
        form  = FileForm(request.POST,request.FILES,instance=f)
        if form.is_valid():
            form.save()
        return HttpResponseRedirect(reverse(polls:myfile,args=(file_id,)))
    form = FileForm({id:f.id,name:f.name})
    return render(request, polls/file.html, {form: form, file: f})

4.url.py加入此视图映射

app_name = polls
urlpatterns = [
    path(myfile/<int:file_id>/,views.myfile,name= myfile),
]

5.创建polls/file.html模板文件

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>上传文件</title>
</head>
<body>
<h1>{{ file.name }}</h1>
<form enctype="multipart/form-data" method="post" id="testfile_form" novalidate="true">
{% csrf_token %}
{{ form }}
<input type="submit" value="保存" class="default" name="_save">
</form>
{% if file.data %}
<p>{{ file.data.read }}</p>
{% endif %}
{% if file.img %}
<img src="{{ file.img.url }}">
{% endif %}
</body>
</html>

完成后打开http://127.0.0.1:8000/polls/myfile/1/

django实现上传文件读取文件内容

 

 

 可以上传文件和图片了,并且读取url和内容,以及大小

django实现上传文件读取文件内容

 

 

 

 

django实现上传文件读取文件内容

上一篇:几种获取html元素的方法


下一篇:dhtmlxGantt使用教程:如何配置树列