首页 > Web开发 > 详细

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

时间:2021-02-09 18:16:49      阅读:177      评论:0      收藏:0      [点我收藏+]

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/

技术分享图片

 

 

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

技术分享图片

 

 

 

 

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

原文:https://www.cnblogs.com/zerotest/p/14392841.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!