Django当中如何实现文件的上传的几种方法
在Django当中需要进行文件的上传,那么有哪几种方式呢?自己总结了下,有如下几种方法。
方式一:基于form表单进行上传。
index.html:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>xx</title> </head> <body> <h3>form表单上传文件</h3> <form action="/upload_file/" method="post" enctype="multipart/form-data"> <p><input type="file" name="upload_file_form"></p> <input type="submit" value='上传'> </form> </body> </html>
注意事项:1.method为post请求;2.必须加入 enctype="multipart/form-data";3.input标签内type为file类型
视图函数:
def index(request): return render(request,"index.html") def upload_file(request): print("FILES:",request.FILES) print("POST:",request.POST) return HttpResponse("上传成功!")
上传的文件被放在了request对象中,要去处理对应的文件,则直接去requeset.FILES中调用。
方式二:基于ajax进行上传。
index.html:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>xx</title> <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script> </head> <body> <h3>Ajax上传文件</h3> <p><input type="text" name="username" id="username" placeholder="username"></p> <p><input type="file" name="upload_file_ajax" id="upload_file_ajax"></p> <button id="upload_button">提交</button> {#注意button标签不要用在form表单中使用#} <script> $("#upload_button").click(function(){ var username=$("#username").val(); var upload_file=$("#upload_file_ajax")[0].files[0]; var formData=new FormData(); formData.append("username",username); formData.append("upload_file_ajax",upload_file); $.ajax({ url:"/upload_file/", type:"POST", data:formData, contentType:false, processData:false, success:function(){ alert("上传成功!") } }); }) </script> </body> </html>
注意事项:1.contentType:false, 和 processData:false ;2.声明一个FormData();3.去取upload_file_ajax的值时,var upload_file=$("#upload_file_ajax")[0].files[0];