C#通过HttpWebRequest上传文件(自测通过)
C#通过HttpWebRequest进行文件上传,自己亲测没问题,如果需要请自取
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Reflection; using System.Text; namespace ConsoleApp1 { internal class Program { static void Main(string[] args) { var url = "http://www.afosoallwx.cn/zhTestApi/public/admin.php/wechat/Afscdouniontransaction/Afsupload"; var path = "C:\\Users\\Administrator\\Pictures\\Saved Pictures\\景甜.jpg"; FileUploader.UploadFile(url, path); Console.WriteLine("success"); Console.ReadLine(); } } public class FileUploader { public static void UploadFile(string url, string filePath, string fieldName = "file") { var fileInfo = new FileInfo(filePath); var request = (HttpWebRequest)WebRequest.Create(url); request.Method = "POST"; // 设置ContentType为multipart/form-data,并包含一个随机生成的boundary var boundary = "----------------------------" + DateTime.Now.Ticks.ToString("x"); request.ContentType = "multipart/form-data; boundary=" + boundary; // 这里简化了处理过程,通常你需要更详细地构建POST数据 // 包括文件和其他表单字段 // 假设你已经有了构建好的POST数据(bytes),以下是如何写入这些数据 using (var requestStream = request.GetRequestStream()) { // 这里应该写入完整的multipart/form-data请求体 // 但为了简化,我们仅模拟写入一些数据 var buffer = Encoding.UTF8.GetBytes("--" + boundary + "\r\n"); var header = $"Content-Disposition: form-data; name=\"{fieldName}\"; filename=\"{fileInfo.Name}\"\r\nContent-Type: {GetMimeType(fileInfo.Extension)}\r\n\r\n"; var headerBytes = Encoding.UTF8.GetBytes(header); // 假设fileBytes是文件的字节数组 byte[] fileBytes = File.ReadAllBytes(filePath); // 写入boundary、header和文件内容 requestStream.Write(buffer, 0, buffer.Length); requestStream.Write(headerBytes, 0, headerBytes.Length); requestStream.Write(fileBytes, 0, fileBytes.Length); // 写入结尾boundary var footer = Encoding.UTF8.GetBytes("\r\n--" + boundary + "--\r\n"); requestStream.Write(footer, 0, footer.Length); } // 发送请求并接收响应 using (var response = (HttpWebResponse)request.GetResponse()) { // 处理响应... using (var resStream = response.GetResponseStream()) { using (StreamReader myStreamReader = new StreamReader(resStream, Encoding.UTF8)) { string retString = myStreamReader.ReadToEnd(); Console.WriteLine(retString); } } } } // 根据文件扩展名返回MIME类型,这里需要扩展以支持更多类型 private static string GetMimeType(string extension) { switch (extension.ToLower()) { case ".jpg": case ".jpeg": return "image/jpeg"; case ".png": return "image/png"; // 添加更多case来处理其他文件类型 default: return "application/octet-stream"; } } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
2019-07-01 PowerDesigner设置code和name不联动的方法
2017-07-01 Maven常用dependency记录