form表单上传文件

 form表单

<form action="/file_put/" method="post" enctype="multipart/form-data">
     姓名<input type="text" name="user">
     文件<input type="file" name="file_obj">
     <input type="submit">
</form>
                    

ajax形式

<div>
    姓名<input type="text" id="user">
    文件<input type="file" name="file_obj" id="file">
    <input type="button" class="filebtn" value="提交">
    <p class="msg"></p>
</div>

// 发送文件

$(".filebtn").click(function () {

  var formdata=new FormData();
  formdata.append("file_obj",$("#file")[0].files[0]);
  formdata.append("user",$("#user").val());

  $.ajax({
      url:"/file_put/",
      type:"post",

      // Ajax上传文件必备参数
      processData: false ,    // 不处理数据
      contentType: false,    // 不设置内容类型

      data:formdata,
      success:function (response) {
          console.log(response);
          if (response=="OK"){
              $(".msg").html("提交成功!")
          }
      }
  })
  
})

视图:

def file_put(request):

    print(request.POST)
    print(request.FILES)
    file_obj=request.FILES.get("file_obj")
    # 文件对象有一个name属性,获取文件名称字符串
    print(file_obj.name)
    path=file_obj.name

    path=os.path.join(settings.BASE_DIR,"media","img",path)
    with open(path,"wb") as f:
        for line in file_obj:
            f.write(line)


    return HttpResponse("OK")

 

posted @ 2018-11-28 12:09  清风_Z  阅读(573)  评论(0编辑  收藏  举报