今天突然心血来潮,研究了下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元起
查
看
更
多