Django_文件上传

  使用Django框架实现文件上传功能

    upload.html 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>uploadFile</title>

</head>
<body>

<form method="post" action="/upload/" enctype="multipart/form-data">
        <input id="user" type="text" name="user" />
        <input id='file' type="file" name="file" />
        <input type="submit" />
    </form>

</body>
</html>

  模板文件中,创建一个form表单,在有文件上传的form表单中,method属性必须为post,而且必须指定它的encrytype=‘multipart/form-data’,表示不对字符进行编码,type类型为'file'

  views

def uploadFile(request):
    if request.method == 'POST':
        my_file = request.FILES.get('file')
        with open(os.path.join('uploadFileDemo', my_file.name), 'wb') as f:
            for line in my_file.chunks():
                f.write(line)
        return HttpResponse('上传成功')
    return render(request,'upload.html')

   获取文件使用request.FILES.get()方法,因为上传的文件是保存在FILES这个字典中的,关于上传文件的几个方法和属性如下

myFile.read():从文件中读取整个上传的数据,这个方法只适合小文件
myFile.chunks():按块返回文件,通过在for循环中进行迭代,可以将大文件按块写入到服务器中
myFile.multiple_chunks():这个方法根据myFile的大小,返回True或者False,当myFile文件大于2.5M(默认为2.5M,可以调整)时,该方法返回True,否则返回False,因此可以根据该方法来选择选用read方法读取还是采用chunks方法
myFile.name():这是一个属性,该属性得到上传的文件名,包括后缀
myFile.size:这是一个属性,该属性得到上传文件的大小
#myFile.multiple_chunks()使用
 if myFile.multiple_chunks() == False:
      # 使用myFile.read()
 else:
      # 使用myFile.chunks()

猜你喜欢

转载自www.cnblogs.com/iamluoli/p/10131944.html