django+python两种方式实现上传文件

如题所述

第1个回答  2024-09-05
前言

今天突然心血来潮,研究了下django+python是如何上传文件的,并且总结出了两种方式能够实现文件的上传,接下来让我们一起看一下具体如何实现。

第一:直接采用文件读写的方式上传

第一种方式是利用文件流的读写实现上传,总体来说实现起来也不算难,大概分为三步

第一步是修改配置文件settings.py添加路径代码用于存放文件上传后的位置

第二步配置html模板,添加input元素用于选择要上传的文件,需要注意的是form表单需要添加enctype=multipart/form-data。来标识上传是文件

第三步就是编写python代码了从而通过流的读取的方式实现文件上传下面我们来看下具体实现的代码

settings.py文件中设置文件的存放路径和文件读取路径

MEDIA_ROOT=os.path.join(BASE_DIR,'media')MEDIA_URL='/media/'

html模板文件:

<formmethod="post"enctype="multipart/form-data"><inputtype="file"name='photo'></form>

python后台代码

importosfromdjango.confimportsettingsfile=request.FILES.get('photo')saved_path=os.path.join(settings.MEDIA_ROOT,'user_photos')ifnotos.path.exists(saved_path):#如果文件路径不存在则创建文件保存目录os.mkdir(saved_path)saved_file=os.path.join(saved_path,file.name)#file.name为带后缀的文件名withopen(saved_file,'wb+')asof:#以二进制留写的方式写入文件,文件不存在则自动创建iffile.multiple_chunks():#判断如果文件大于默认值2.5M(可以修改)则采用分块的方式上传forfcinfile.chunks():of.write(fc)else:of.write(file.read())#小于2.5M则直接上传第二:利用django自带的文件存储系统上传

第二种方式相交第一种方式要简单很多,因为我们用的是django自带的库实现上传,代码上更为简洁,前两步settings配置和HTML模板配置跟第一步是一样的。第三步的时候我们用来django自带的库去实现上传。具体代码实现如下所示:

settings.py文件设置同上

html模板同上

模型类定义

fromdjango.dbimportmodelsclassUserInfo(models.Model):photo=models.ImageFile(upload_to="user_photo")#如果目录不存在django会自动创建

python后台代码

file=request.FILES.get('photo')u=UserInfo()u.photo=fileu.save()

以上便实现了简单的两种文件上传的方式。

logo设计

创造品牌价值

¥500元起

APP开发

量身定制,源码交付

¥2000元起

商标注册

一个好品牌从商标开始

¥1480元起

公司注册

注册公司全程代办

¥0元起

    官方电话官方服务
      官方网站八戒财税知识产权八戒服务商企业需求数字市场
相似回答
大家正在搜