winform端代码:
public static string PostImageData(string url, IDictionary<string, string> parameters, int timeout, string userAgent, CookieCollection cookies)
{
System.GC.Collect();//垃圾回收,回收没有正常关闭的http连接
string result = "";
HttpWebRequest request = null;
HttpWebResponse response = null;
//如果是发送HTTPS请求
if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase))
{
request = WebRequest.Create(url) as HttpWebRequest;
}
else
{
// request = WebRequest.Create(url) as HttpWebRequest;
request = (HttpWebRequest)WebRequest.Create(url);
}
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
//request.ContentLength = data.Length;
//设置代理UserAgent和超时
//request.UserAgent = userAgent;
//request.Timeout = timeout;
if (cookies != null)
{
request.CookieContainer = new CookieContainer();
request.CookieContainer.Add(cookies);
}
//发送POST数据
if (!(parameters == null || parameters.Count == 0))
{
StringBuilder buffer = new StringBuilder();
int i = 0;
foreach (string key in parameters.Keys)
{
if (i > 0)
{
buffer.AppendFormat("&{0}={1}", key, parameters[key]);
}
else
{
buffer.AppendFormat("{0}={1}", key, parameters[key]);
i++;
}
}
byte[] data = Encoding.ASCII.GetBytes(buffer.ToString());
request.ContentLength = data.Length;
using (Stream stream = request.GetRequestStream())
{
stream.Write(data, 0, data.Length);
stream.Close();
}
//获取服务端返回
response = (HttpWebResponse)request.GetResponse();
//获取服务端返回数据
StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
result = sr.ReadToEnd().Trim();
sr.Close();
}
string[] values = request.Headers.GetValues("Content-Type");
return result;
}
string url = "http://127.0.0.1:5000/upload";
IDictionary<string, string> parameters = new Dictionary<string, string>();
byte[] byteData = GetPictureData(m_filepath);
string picStr = Convert.ToBase64String(byteData);
parameters.Add("picStr", picStr);
string mes = HttpService.PostImageData(url, parameters, 3000, null, null);
label_message.Text = mes;
flask端代码:
@app.route('/upload', methods=['POST'])
def upload():
#upload_file = request.files["picture"]
# imgdata = base64.b64decode(upload_file)
# file = open('1.jpg', 'wb')
# file.write(imgdata)
# file.close()
upload_file = request.form.get("picStr")
upload_file = urllib.parse.quote_plus(upload_file, safe="/=")
# upload_file = bytes(upload_file, encoding="utf8")
imgdata = base64.b64decode(upload_file)
print(len(imgdata))
global savePath
savePath = os.getcwd() + "/upload/" + str(uuid.uuid1()) + ".jpg"
print(savePath)
file = open(savePath, 'wb')
file.write(imgdata)
file.close()
# img_array = np.fromstring(imgdata, np.uint8) # 转换np序列
# img = cv2.imdecode(img_array, cv2.COLOR_BGR2RGB) # 转换Opencv格式
#cv2.imwrite('4.jpg', img)
return "图片上传成功!"