[HttpPost]public Task<Hashtable> ImgUpload(){// 检查是否是 multipart/form-dataif (!Request.Content.IsMimeMultipartContent("form-data"))throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);//文件保存目录路径string SaveTempPath = $"~/Files/Image/{DateTime.Now.Year}/{DateTime.Now.Month}";String dirTempPath = HttpContext.Current.Server.MapPath(SaveTempPath);if (!Directory.Exists(dirTempPath)){Directory.CreateDirectory(dirTempPath);}// 设置上传目录var provider = new MultipartFormDataStreamProvider(dirTempPath);//var queryp = Request.GetQueryNameValuePairs();//获得查询字符串的键值集合var task = Request.Content.ReadAsMultipartAsync(provider).ContinueWith<Hashtable>(o =>{Hashtable hash = new Hashtable();hash["error"] = 1;hash["errmsg"] = "上传出错";var file = provider.FileData[0];//provider.FormDatastring orfilename = file.Headers.ContentDisposition.FileName.TrimStart('"').TrimEnd('"');FileInfo fileinfo = new FileInfo(file.LocalFileName);//最大文件大小int maxSize = 10000000;if (fileinfo.Length <= 0){hash["error"] = 1;hash["errmsg"] = "请选择上传文件。";}else if (fileinfo.Length > maxSize){hash["error"] = 1;hash["errmsg"] = "上传文件大小超过限制。";}else{string fileExt = orfilename.Substring(orfilename.LastIndexOf('.'));//定义允许上传的文件扩展名string fileTypes = "gif,jpg,jpeg,png,bmp";if (String.IsNullOrEmpty(fileExt) || Array.IndexOf(fileTypes.Split(','), fileExt.Substring(1).ToLower()) == -1){hash["error"] = 1;hash["errmsg"] = "上传文件扩展名是不允许的扩展名。";}else{String ymd = DateTime.Now.ToString("yyyyMMdd", System.Globalization.DateTimeFormatInfo.InvariantInfo);String newFileName = DateTime.Now.ToString("yyyyMMddHHmmss_ffff", System.Globalization.DateTimeFormatInfo.InvariantInfo);fileinfo.CopyTo(Path.Combine(dirTempPath, newFileName + fileExt), true);fileinfo.Delete();hash["error"] = 0;hash["errmsg"] = "上传成功";}}return hash;});return task;}
调用方法:
var client = new RestClient("http://localhost:56727/api/UploadFiles/ImgUpload");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
client.UserAgent = "Apifox/1.0.0 (https://apifox.com)";
request.AddFile("Files", "<Files>");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
加入文件地址就可以操作
https://www.jb51.net/article/44490.htm
winform上传图片方法
private async void btnUpload_Click(object sender, EventArgs e)
{using (HttpClient client = new HttpClient()){// 设置WebAPI的URLstring apiUrl = "http://example.com/api/uploadfile";// 选择要上传的文件OpenFileDialog openFileDialog = new OpenFileDialog();if (openFileDialog.ShowDialog() == DialogResult.OK){string filePath = openFileDialog.FileName;// 读取文件内容byte[] fileContent = File.ReadAllBytes(filePath);// 创建MultipartFormDataContent对象MultipartFormDataContent content = new MultipartFormDataContent();ByteArrayContent fileContentData = new ByteArrayContent(fileContent);content.Add(fileContentData, "file", Path.GetFileName(filePath));// 发送HTTP请求HttpResponseMessage response = await client.PostAsync(apiUrl, content);if (response.IsSuccessStatusCode){MessageBox.Show("文件上传成功!");}else{MessageBox.Show("文件上传失败");}}}
}
在上面的代码中,我们使用HttpClient类来发送一个POST请求,将文件内容作为MultipartFormDataContent发送到WebAPI的指定URL。如果上传成功,将会显示一个成功的消息框,否则会显示一个失败的消息框。
请确保在调用WebAPI之前,对WebAPI的URL进行正确的配置,并确保文件选择对话框选择的文件是存在的。