
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庫編寫測試代碼進行測試