Python+django实现文件上传

时间:2022-08-27 00:05:43

1、文件上传(input标签)

 (1)html代码(form表单用post方法提交)

?
1
2
3
4
5
6
<input class="btn btn-primary col-md-1" style="margin:0px 15px 25px 15px;" id="submitForm" type="button" value="提交" />
<form id="picture_form" action="/addForm/"enctype="multipart/form-data" method="post">
 <table>
   表格
 </table>
</form>

(2)jq提交表单到后台

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$("#submitForm").click(function(){
  //alert($("#SelectBus").val());
  addNameForm();//因为是动态加载的表单内容,所以会用函数给所用标签符name值
  $.ajaxSetup({
    async : false
  });
  $("#picture_form").ajaxSubmit({
    resetForm:false,
    dataType:'json',
    success:function(data){
      if(data=1){alert("提交成功");}
      else{alert("提交失败");}
    }
  });
});

(3)python后台接受处理表单所传内容,主要file处理

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#自定义存储路径
rollfileName="webStatic/uploadfile/files/"
rollfilePath=os.path.join(basePath,rollfileName)
# req.POST.get(text[1],'')如果获取到信息,则值不是123,如果是空,没有获取到信息结果是123
if req.POST.get(text[1],'123')=='123':
  # 获取文件二进制流
  reqfile = req.FILES[text[1]]
  # 获取文件名后缀
  filetype=reqfile.name.split(".")[-1]
  # 生成随机字符串加后缀的文件名
  filename=str(uuid.uuid1())+'.'+filetype
  # 打开文件存储路径
  of = open(rollfilePath+filename, 'wb+')
  # 向指定路径写入文件
  for chunk in reqfile.chunks():
    of.write(chunk)#写入内容
  of.close()#关闭连接

18 #在数据库中存储路径rollfileName+filename

(4)python后台处理用到的包

 1 #生成无序字符串,替换文件名

 2 import uuid