Django文件上传实例

近日在用Django框架开发过程中遇到上传用户头像问题,经多方搜索资料,终于解决问题!

1.首先,在html模版中添加类似下面的代码


1

2

3

4

5

<form enctype="multipart/form-data" method="POST" action="/view/process/upload/file">

    {% csrf_token %}

    <input type="file" name="your_file"/>

    <input type="submit" value="上传文件" />

</form>

这里需要注意一下几点:

  1. form表单汇总一定要有enctype="multipart/form-data"属性
  2. form需要以POST方式提交
  3. form的Action属性对应views中处理upload上传逻辑的函数
  4. 需要有csrf_token这个标签,否则post无法提交
  5. 第一个<input>的类型为file,这是一个文件选择器,name属性很重要,因为后面通过此字段取出文件对象

2.接下来,编写CGI逻辑


1

2

3

4

5

6

7

8

9

10

11

12

13

14

def process_upload_file(request):

    # 获取文件

    file_obj = request.FILES.get(‘your_file‘, None)

    if file_obj == None:

        return HttpResponse(‘file not existing in the request‘)

    

    # 写入文件

    file_name = ‘temp_file-%d‘ % random.randint(0,100000) # 不能使用文件名称,因为存在中文,会引起内部错误

    file_full_path = os.path.join(UPLOAD_ROOT, file_name)

    dest = open(file_full_path,‘wb+‘)

    dest.write(file_obj.read())

    dest.close()

    

    return render_to_response(‘upload_result.html‘,{})

取用文件的方式为:“file_obj = request.FILES.get(‘file‘, None)”。第一个参数”your_file”对应form中的第一个input标签。然后,可以通过file_obj.name获取文件名称,file_obj.read()方法获取文件内容。上传的文件放在内存中,所以此方法只适合小文件上传。

时间: 2024-10-15 10:18:02

Django文件上传实例的相关文章

django文件上传

django文件上传 -------------------上传图片-------------------1.model中定义属性类型为models.ImageField类型pic=models.ImageField(upload_to='images/upload/') 2.如果属性类型为ImageField需要安装包Pilowpip install Pillow==3.4.1 3.图片存储路径1.在项目根目录下创建static文件夹 2.图片上传后,会被保存到"/static/images/

PHP中,文件上传实例

PHP中,文件上传一般是通过move_uploaded_file()来实现的.  bool move_uploaded_file ( string filename, string destination ) 本函数检查并确保由 filename 指定的文件是合法的上传文件(即通过 PHP 的 HTTP POST 上传机制所上传的).如果文件合法,则将 其移动为由 destination 指定的文件. 如果 filename 不是合法的上传文件,不会出现任何操作,move_uploaded_fi

Django文件上传机制用法详解(转)

Django文件上传机制用法详解 http://www.jbxue.com/article/24283.html 分享下Django文件上传机制的用法,包括基本上传文件的原理,以及如何处理上传文件的方法,需要的朋友参考下. 当Django处理上传一个文件时,文件数据被放在request.FILES中. 这个文档解释文件怎么样被存储在磁盘上或者内存中,怎样定制默认的行为. 一,基本文件上传考虑一个包含FileField的简单的表单: 复制代码 代码示例: from  django  import 

SpringMVC多文件上传实例

后台Conroller import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.PrintWriter; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.util.Date;

Grails笔记三:完整的文件上传实例

文件上传在web应用中是比较普遍的,相对于使用jsp等技术实现文件上传,Grails的文件上传着实让人喜爱,因为极其简单,让人看一遍就容易轻松记住!不多说,实例如下: 1.在gsp页面中使用Grails标签uploadForm <g:uploadForm name="myUpload" action="saveFile"> <input type="file" name="myFile" /> <

Android图片文件上传实例

原文:Android图片文件上传实例 源代码下载地址:http://www.zuidaima.com/share/1550463718132736.htm 支持拍照图片上传和从手机相册中获取图片上传到服务器端的功能 源码截图

django文件上传和序列化

django实现文件上传 使用form表单上传文件 html页面 <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> .img { width: 300px; height: 300px; } </style> </head> <body> <form i

文件上传实例

下面实例都是在墨者学院靶场做的,几种常见的上传姿势 1.结合iis5.x/6.0解析漏洞上传文件 先上传一个asp文件,抓包看看返回结果是什么 由上图我们可以知道服务器是iis6.0,接下来我们利用iis6.0解析漏洞来上传我们的一句话,添加一个asp目录  2.一句话木马图片 分析上图,先上传php文件,不允许,那么改下后缀名为png,还是不行,看来是对文件内容做了检查,做个图片马,上传  菜刀连接  3.绕过前端验证 先上传php文件 从上图可以看到上传的时候弹出一个弹窗,只让我们上传上面格

Django——文件上传

Django在处理文件上传时,文件数据被打包封装在request.FILES中. 一.简单上传 首先,在模型中创建表格,它必须包含一个FileField: # models.py from django import forms class UploadFile(forms.Form): file = forms.FileField() 处理这个表单的视图将在request.FILES中收到文件数据,可以用request.FILES['file']来获取上传文件的具体数据,其中的键值‘file’