django_5:表单1——文件上传

上传文件1

class UserForm(forms.Form):
    name = forms.CharField()
    headImg = forms.FileField()
def regist(req):
    if req.method == ‘POST‘:
        uf = UserForm(req.POST, req.FILES)
        if uf.is_valid():
            print(uf.cleaned_data[‘name‘])   #通过clean_data获取字段
            print(req.FILES)                            #类字典对象<MultiValueDict: {‘headImg‘: [<InMemoryUploadedFile: Chrysanthemum.jpg (image/jpeg)>]}>
print(uf.cleaned_data[‘headImg‘])                  #上传文件的名字
            print(uf.cleaned_data[‘headImg‘].name)               #上传文件的名字
            print(uf.cleaned_data[‘headImg‘].size)
            fp = open(‘/tmp/img/‘+uf.cleaned_data[‘headImg‘].name, ‘wb‘)  #打开二进制文件用于保存
            img = uf.cleaned_data[‘headImg‘].read()
            fp.write(img)
            fp.close()
            return HttpResponse(‘ok‘)                      #成功返回ok,不会执行到下方的return
    else:
        uf = UserForm()                               #当传入空,即绑定失败,被执行,然后执行后边,第一次请求时也会被执行
    return render(req, ‘regist.html‘, {‘uf‘:uf})                

上传文件2:使用数据库

models.py

class User(models.Model):
    name = models.CharField(max_length=30)
    sex = models.CharField(max_length=1, choices=sex_choices)
    headImg = models.FileField(upload_to=‘./upload‘)

    def __str__(self):
        return self.name

设置admin.py,使可以在admin管理界面操作。

from django.contrib import admin
from blog.models import User     #引入应用的表

# Register your models here.
admin.site.register(User)       #把User注册到admin

数据库中字段保存文件路径,默认会在工程下生成定义的upload目录,可以在setting.py中修改,不知道修改哪个?

修改保存路径后,之前上传过的怎么办,复制过去并修改,还是不变?

能不能通过把两个方法合并?通过自己的web上传到数据

时间: 2024-10-14 15:22:02

django_5:表单1——文件上传的相关文章

Struts2文件上传(基于表单的文件上传)

•Commons-FileUpload组件 –Commons是Apache开放源代码组织的一个Java子项目,其中的FileUpload是用来处理HTTP文件上传的子项目 •Commons-FileUpload组件特点 –使用简单:可以方便地嵌入到JSP文件中,编写少量代码即可完成文件的上传功能 –能够全程控制上传内容 –能够对上传文件的大小.类型进行控制 •需要下载Common-FileUplaod框架地址(当然MyEclipce中Struts2支持里自带有这两个包): –http://jak

AJAX提交form表单带文件上传

过了三天才想要写博客,这样不好,要改正 在做毕设的时候,用户发帖涉及到了文件上传的问题,在这里记录一下 背景: 在用户发帖的时候,用户只想发表文字postText,还有些用户想在发表postText的同时还发表一些图片,如何做? 上代码 不写的太细了,和流水账似的,挑重点记录一下. 1.前台的文件上传 本来想用form表单直接上传了,但是form提交时会刷新整个页面,但这不是我想要的,所以使用了ajax提交form表单. 利用ajax提交表单需要用到jquery.form.js这个包,网上有很多

云控后台系统 经验总结(表单和文件上传等)

1. qq emoji替换 接收到这样的字符串,通过正则匹配到每组方括号然后进行替换 var _str = i.content.replace(/\[.{1,3}\]/g, (str) => { //i.content为遍历出来的消息记录 var index; Object.keys(faceCode).forEach((key, _index) => { //faceCode为字符串与样式对应的关系,也可以通过参数去和后台约定好,不用这样查找 if (key === str) { index

(25) java web的struts2框架的使用-基于表单的文件上传

一,首先创建一个表单页面 <body> <form action="uploads" method="post" enctype="multipart/form-data"> 文件: <input type="file" name="uploadObject"> <input type="submit" value="提交"&

9.16 基于form表单的文件上传实现 ContextType

基于form表单传递普通键值对的方式传递数据: enctype="application/x-ww-form-urlencoded" 基于form表单上传文件 传递数据,非键值对: enctype="multipart/form-data" enctype="text/plain" 这种方式几乎不用 基于ajax传递普通键值对的方式传递数据到服务器 只要请求体有数据,request.body都有值 .但request.post 只有当conten

java表单+多文件上传~~源代码

private static final String C_ACTION_CREAT_ACTIVITY = "meeting_register_addActivity"; @RequestMapping(value = "/addActivity") public CIPResponseMsg addActivity(HttpServletRequest request, HttpServletResponse response) throws Exception

form表单无刷新上传文件

很多时候,我们上传完文件之后,不想当前页面跳转,或者是刷新一下.那么我们需要怎么做呢? 首先,我们用的是最简单的form表单上传,提交方式.代码如下 <!--大家注意到这个form的target的了么?这个target属性的值frameFile,是form之后的 iframe的name值,这样的写法是让当前的form表单在提交表单内容的时候转交给iframe中进行页面 中表单处理,并且不会产生当前页面跳转!--> <form id="uploadForm" class

$_FILE参数详解及简单&lt;form&gt;表单无刷新上传文件

$_FILES:经由 HTTP POST 文件上传而提交至脚本的变量,类似于旧数组$HTTP_POST_FILES 数组(依然有效,但反对使用)详细信息可参阅 POST方法上传 $_FILES数组内容如下: $_FILES['myFile']['name'] 客户端文件的原名称 $_FILES['myFile']['type']   文件的 MIME类型,需要浏览器提供该信息的支持,例如"image/gif" $_FILES['myFile']['size']    已上传文件的大小,

form表单和ajax上传文件

使用form表单上传文件 知识点/注意点 from表单里 要加上这行 enctype="multipart/form-data" 上传文件 上传的是二进制数据 用request.FILES 拿到的也是一个字典 前端代码 index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Titl