C# WinForm 使用 WebClient.UploadFile 或 OpenWrite 上傳圖片到 Python 服務器(https://guanjia.51xueba.cn:2014/upload),始終返回 404,URL 確認無誤。
先看服務端日誌:是否收到請求?收到後是否正確路由處理?是否主動返回 404?
/upload vs /upload/,Python 框架(Flask/Django/Tornado)路由嚴格區分尾部斜杠。UploadFile 默發 multipart/form-data,服務端需對應解析(如 Flask request.files)。file、image),客戶端需一致。UploadFile 使用文件名作為字段名,可能不匹配。client_max_body_size 限制導致 413/404。WebClient 默不攜帶 POST 數據,導致 404。request.method, request.path, request.headers, request.files。HttpClient + MultipartFormDataContent 精確控制字段名、邊界、Header。// HttpClient 精確控制示例
using (var client = new HttpClient())
using (var content = new MultipartFormDataContent()) {
var bytes = File.ReadAllBytes(filePath);
content.Add(new ByteArrayContent(bytes), "file", "image.jpg"); // 字段名 "file"
var resp = await client.PostAsync("https://host:2014/upload", content);
resp.EnsureSuccessStatusCode();
}
**404 多半是服務端路由匹配失敗**,拿到服務端日誌是破局關鍵。