今日完成了团队项目的个人头像上传的功能,对用户的数据库进行了修改增加了src即用户头像的存放路径,之前没学习过python的文件操作,通过头像上传对python的文件操作有了一定了解。
代码部分:
<div class="user-account"> <p class="tip">你好,{{ userdata[3]}}</p> <input type="file" name="file" id = "input_file" accept="image/gif,image/jpeg,image/jpg,image/png,image/svg" οnchange="imgPreview(this)" ><br> <button id="userimg_btn" onclick="userimg_btn()">上传头像</button> </div> <script> function userimg_btn(){ var formData = new FormData(); formData.append('file', $('#input_file')[0].files[0]); //添加图片信息的参数 formData.append('sizeid',123); //添加其他参数 $.ajax({ url: '/user_img', type: 'POST', cache: false, //上传文件不需要缓存 data: formData, processData: false, // 告诉jQuery不要去处理发送的数据 contentType: false, // 告诉jQuery不要去设置Content-Type请求头 success: function (data) { var rs = data.data if(rs[0]==1){ alert('成功!'); window.open("/user_pager",'_self') }else{ alert(rs); } }, error: function (data) { tipTopShow("上传失败"); } }) } </script>
#头像上传 @app.route('/user_img',methods=['GET', 'POST']) def user_img(): #接收图片并生成保存路径 img=request.files.get("file") img_name = img.filename file_path = "D:\flaskProjects\MovieTop9\MovieTop\static\userimg\"+img_name # 删除原头像 userphone = session['userphone'] userdata = sql.android_query(userphone) if (userdata[4] != "" and userdata != "../static/userimg/0000.jpg"): str_s = userdata[4].split('/') path = "D:\flaskProjects\MovieTop9\MovieTop\static\userimg\" + str_s[3] try: os.remove(path) except: traceback.print_exc() return jsonify({"data": 0}) #保存新头像 try: img.save(file_path) except: traceback.print_exc() return jsonify({"data":0}) #将路径存入数据库 userimg="../static/userimg/"+img_name flag=sql.user_img_input(userimg,userphone) data=[flag,img_name] return jsonify({"data":data})
#用户上传头像 def user_img_input(userimg,userphone): cursor = None conn = None conn, cursor = get_conn() sql = "update userdata set userimg="+"'"+userimg+"' where userphone="+userphone try: cursor.execute(sql) conn.commit() close_conn(conn, cursor) print("上传成功") print(userimg+""+userphone) return 1 except: traceback.print_exc() return 0