当前位置: 首页 > article >正文

ASP.net WebAPI 上传图片实例(保存显示随机文件名)

 [HttpPost]
        public Task<Hashtable> ImgUpload()
        {
            // 检查是否是 multipart/form-data
            if (!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.FormData
            string 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的URL
        string 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进行正确的配置,并确保文件选择对话框选择的文件是存在的。


http://www.kler.cn/a/416718.html

相关文章:

  • QuantLib-python使用心得(持续更新)
  • 【链表】【删除节点】【刷题笔记】【灵神题单】
  • houdini肌肉刷pin点的方法
  • 【前端】跨域问题与缓存
  • 探索 Vue 3.0中Treeshaking特性?
  • 命令行使用ssh隧道连接远程mysql
  • 时频转换 | Matlab基于垂直二阶同步压缩变换vertical second-order synchrosqueezing一维数据转二维图像方法
  • 微服务篇-微服务保护:使用 Sentinel 来实现请求限流、线程隔离、服务熔断和 Fallback 备用方案的使用
  • 终端环境下关闭显示器
  • 基于AutoEncode自编码器的端到端无线通信系统matlab误码率仿真
  • Keil Debug 添加变量监视
  • 【北京迅为】iTOP-4412全能版使用手册-第二十章 搭建和测试NFS服务器
  • Figma入门-自动布局
  • Springboot组合SpringSecurity安全插件基于密码的验证Demo
  • 目标检测,图像分割,超分辨率重建
  • 什么是Delta Lake(数据湖框架),以及Delta Lake特性和如何使用
  • 软路由设置ip地址实现一机一IP
  • JiaJia-CP-1,2,3的WP(2)
  • 【Redis初阶】Set 集合
  • Bert+CRF的NER实战
  • 七大基于比较的排序算法
  • C#中的工厂模式
  • GPT的自回归语言建模(Autoregressive Language Modeling)
  • auto与decltype
  • Python知识点精汇:列表篇精汇!
  • 泰州榉之乡全托机构探讨:自闭症孩子精细动作训练之法