HTML文件源碼:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style type="text/css"> body{ background: antiquewhite; } * { padding: 0; margin: 0; } form { width: 500px; border: 1px solid rgba(0,0,0,0.7); box-shadow: inset 0 0 15px rgba(0,0,0,0.3); border-radius: 10px; margin: 100px auto; background: #99bfe1; } form>div { margin: 15px 0; padding: 0 50px; } input[type='text']{ width: 300px; height: 30px; } input[type='radio'] { margin: 0 10px; } input[type='submit'],input[type='button']{ width: 100px; height: 30px; border: 1px solid rgba(0,0,0,0.5); color: white; background: rgba(0,0,0,0.7); border-radius: 5px; } form>div:last-child{ text-align: right; } </style> </head> <body> <!--在文件上傳時form表單的數據傳輸方式必須為post,並且編碼格式必須為 multipart/form-data,否則服務器端是無法獲取傳輸的文件數據--> <form action="/duoceshi/upload" method="post" enctype="multipart/form-data"> <div> 頭像:<input type="file" name="pic"> </div> <div> 昵稱: <input type="text" name="dcs_name"> </div> <div> 性別: <input type="radio" name="sex" value="男" checked>男 <input type="radio" name="sex" value="女">女 </div> <div> 年齡: <input type="text" name="age"> </div> <div> <input type="submit" value="提交"> </div> </form> </body> </html>
#coding=utf-8 """ =========================== Author:多測師_王sir Time:2020-07-22 22:39 Wechat:xiaoshubass website:www.duoceshi.cn =========================== """ import os from flask import Flask, request, render_template, jsonify from werkzeug.utils import secure_filename from flask import send_from_directory import datetime app = Flask(__name__) # 文件上傳的路徑 UPLOAD_PATH = os.path.join(os.path.dirname(__file__), 'images') @app.route('/duoceshi/upload', methods=['GET', 'POST']) def settings(): if request.method == 'GET': # 創建視圖函數,將該模板內容進行渲染返回 return render_template("upload_page.html") else: # 獲取請求的參數 name = request.form.get('dcs_name') sex = request.form.get("sex") age = request.form.get("age") # 獲取上傳的圖片 pic = request.files.get('pic') if all([name, sex, age, pic]): # 保存文件 filename = secure_filename(pic.filename) pic.save(os.path.join(UPLOAD_PATH, filename)) msg = "文件上傳成功,文件保存的地址為:http://127.0.0.1:5000/images/{}".format(filename) data = { "code": 1, "data": { "name": name, "sex": sex, "age": age, "filename": filename, "datetime": datetime.datetime.now() }, "msg": msg } else: # 返回內容: data = { "code": 1, "data": None, "msg": "參數不能為空!" } return jsonify(data) # 訪問上傳的文件 # 瀏覽器訪問:http://127.0.0.1:5000/images/xxx.png 查看文件 @app.route('/images/<filename>', methods=['GET', 'POST']) def get_image(filename): return send_from_directory(UPLOAD_PATH, filename) if __name__ == '__main__': app.run(debug=True)
#coding=utf-8 """ =========================== Author:多測師_王sir Time:2020-07-28 20:36 Wechat:xiaoshubass website:www.duoceshi.cn =========================== """ ''' 1.請求的url地址:http://127.0.0.1:5000/duoceshi/upload 2.post請求參數傳遞的幾種方式: data:一般用來傳遞表單類型的參數、默認的請求頭是Content-Type:application/x-www-form-urlencoded json:用來傳遞json類型的參數、默認的請求頭是Content-Type:application/json files:用來上傳文件的參數、默認的請求頭是Content-Type:multipart/form-data 3.參數名:(文件名、文件流、文件類型image/png) ''' #組建接口的要素:url地址、接口的入參、請求頭、接口的請求方法 import requests #做接口測試的庫 #1.定義url地址 url = 'http://127.0.0.1:5000/duoceshi/upload' #2.定義接口的入參 data = { 'dcs_name':'多測師_王sir', 'sex':'男', 'age':18 } #3.接口的入參為文件 參數名:(文件名、文件流、文件類型image/png) file = { 'pic':('duoceshi_api.png',open(r'C:\Users\wangzhiqiang\Desktop\desktop\duoceshi_api.png','rb'),'image/png') } #4.發送接口的請求 response = requests.post(url=url,data=data,files=file) # print(response.text) # print(type(response.text)) print(response.json()) #通過json函數把接口的返回數據轉換為字典 print(type(response.json()))
運行環境和流程: 1、前提安裝好python 2、安裝flask cmd 執行命令 pip install flask 3、運行http_service.py這個文件 4、就可以通過http://127.0.0.1:5000/duoceshi/upload訪問這個接口 注意點:get請求返回的是上傳文件的頁面,post請求是上傳文件 5、通過打開upload_page.html進行測試 6、通過postman或者編寫測試代碼進行測試 7、通過Python+Requests庫編寫測試代碼進行測試