加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

django 文件上传样例以及遇到的一些问题

发布时间:2020-12-20 10:50:03 所属栏目:Python 来源:网络整理
导读:使用django上传文件 主流有两种方法 from表单以及ajax,为了自由度高一点,选择了ajax来实现文件的上传 前端部分代码如下: 主要关注? 一 有一个文件上传(type=‘file‘)的按钮,绑定了id f 二 有一个submit按钮来确认文件上传 绑定id??FileUpload div class

使用django上传文件 主流有两种方法 from表单以及ajax,为了自由度高一点,选择了ajax来实现文件的上传

前端部分代码如下: 主要关注?

一 有一个文件上传(type=‘file‘)的按钮,绑定了id f

二 有一个submit按钮来确认文件上传 绑定id??FileUpload

  <div class="form-group">
                  <label for="exampleInputFile">File input</label>
                  <input type="file" id="f">
                  <p class="help-block">Example block-level help text here.</p>
                </div>
              </div>
              <!-- /.box-body -->
              <div class="box-footer">
                <button type="submit" class="btn btn-primary"  id="FileUpload">Submit</button>
              </div>
          </div>

JS代码如下

需要注意的是 绑定了submit点击事件,点击了之后通过FromData 方法 把文件以字典? f? :?$("#f")[0].files[0]); 方式传递给前端?$("#f")[0]是把JQ转换为JS对象

files[0]是获取文件,因为可能有很多文件,这里的意思是获取第一个文件。
$("#FileUpload").click(function () {
        var formdata = new FormData();
        formdata.append("csrfmiddlewaretoken",$("[name=‘csrfmiddlewaretoken‘]").val());
        formdata.append("f",$("#f")[0].files[0]);
   //     console.log("asdasdas")
    $.ajax({
            url: "/assets/api/",type: "post",data: formdata,contentType: false,processData: false,success: function (data) {
                alert("上传成功!")
            }
        })

    })

?

后端代码

通过mession的值做不同的任务

def api(request):if request.method == "POST" and request.POST.get(mession) == "fileupload":
        f_obj = request.FILES.get("f")
        print(f_obj)
        name = f_obj.name
        print(name)

        destination = open(os.path.join("/opt/upload",name),wb+)  # 打开特定的文件进行二进制的写操作
        for chunk in f_obj.chunks():  # 分块写入文件
            destination.write(chunk)
        destination.close()

        return HttpResponse("上传成功")

?

在文件传输的过程中,发现部分文件无法传输,发现django对文件的大小有限制,修改settings.py配置文件

from django.core.files.uploadedfile import InMemoryUploadedFile
from django.core.files.uploadhandler import TemporaryFileUploadHandler
FILE_UPLOAD_HANDLERS = [
    django.core.files.uploadhandler.MemoryFileUploadHandler,django.core.files.uploadhandler.TemporaryFileUploadHandler,]

FILE_UPLOAD_MAX_MEMORY_SIZE = 8621440
DATA_UPLOAD_MAX_MEMORY_SIZE = 8621440
DATA_UPLOAD_MAX_NUMBER_FIELDS = 5000

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读