zoukankan      html  css  js  c++  java
  • 文件上传的几种方法

     
     
    一、enctype="multipart/form-data"
    <!DOCTYPE html>
    <html>
    <head>
        <title>test</title>
    </head>
    <body>
    <form action="/test/" method="post" enctype="multipart/form-data"> <!--如果不加这个的话,提交的数据会以键值对提交-->
        {% csrf_token %}
        文件:<input type="file" name='test'><br>
        <input type="submit" value="提交">
    </form>
    </body>
    </html>
    def test(request):
        if request.method == 'POST':
            file = request.FILES.get('test')
            with open(file.name, 'wb') as f:
                for line in file:
                    f.write(line)
        return render(request, 'test.html')
     
    二、.chunks()
    def upload(request):
        """
        保存上传文件前,数据需要存放在某个位置。默认当上传文件小于2.5M时,django会将上传文件的全部内容读进内存。从内存读取一次,写磁盘一次。
        但当上传文件很大时,django会把上传文件写到临时文件中,然后存放到系统临时文件夹中。
        :param request:
        :return:
        """
        if request.method == "POST":
            # 从请求的FILES中获取上传文件的文件名,file为页面上type=files类型input的name属性值
            filename = request.FILES["file"].name
            # 在项目目录下新建一个文件
            with open(filename, "wb") as f:
                # 从上传的文件对象中一点一点读
                for chunk in request.FILES["file"].chunks():
                    # 写入本地文件
                    f.write(chunk)
            return HttpResponse("上传OK")
    <!DOCTYPE html>
    <html>
    <head>
        <title>test</title>
    </head>
    <body>
    <form action="/test/" method="post">
        {% csrf_token %}
        文件:<input type="file" name='test'>
        <input type="submit" value="提交">
    </form>
    </body>
    </html>
     
     
  • 相关阅读:
    高效出去List集合和数组中的重复元素
    各进制间转换总结
    java集合应用类
    禁止键盘上的刷新键F5等
    Map迭代
    java 过滤字符串方法实现
    java 跟 咖啡的关系
    插件jfreechart+shh实现树状图 柱状图 折线图
    Struts2利用iText导出word文档(包含表格)
    request.getRequestURI() 、request.getRequestURL() 、request.getContextPath()、request.getServletPath()区别
  • 原文地址:https://www.cnblogs.com/changwoo/p/9568516.html
Copyright © 2011-2022 走看看