ASP.net WebAPI 上传图片实例

 更新时间:2013年12月16日 16:00:33   作者:  
这篇文章主要介绍了ASP.net WebAPI 上传图片实例,有需要的朋友可以参考一下

复制代码 代码如下:

[HttpPost]
public Task<Hashtable> ImgUpload()
{
    // 检查是否是 multipart/form-data
    if (!Request.Content.IsMimeMultipartContent("form-data"))
        throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
    //文件保存目录路径
    string SaveTempPath = "~/SayPlaces/" + "/SayPic/SayPicTemp/";
    String dirTempPath = HttpContext.Current.Server.MapPath(SaveTempPath);
    // 设置上传目录
    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;
}

相关文章

  • ASP.Net中表单POST到其他页面的方法分享

    ASP.Net中表单POST到其他页面的方法分享

    这篇文章主要介绍了ASP.Net中表单POST到其他页面的方法,需要的朋友可以参考下
    2014-02-02
  • 使用FlashPaper在线转换.doc为.swf

    使用FlashPaper在线转换.doc为.swf

    Flashpaper的使用相信大多数人都知道,这里的Demo是用于在线转换 .doc文件转换为 .swf的flash文件。
    2011-02-02
  • 国产化之银河麒麟安装.netcore3.1的详细步骤(手动安装)

    国产化之银河麒麟安装.netcore3.1的详细步骤(手动安装)

    这篇文章主要介绍了国产化之银河麒麟安装.netcore3.1的详细步骤(手动安装),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • .Net中Task Parallel Library的进阶用法

    .Net中Task Parallel Library的进阶用法

    这篇文章介绍了.Net中Task Parallel Library的进阶用法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-10-10
  • asp.net 通过httpModule计算页面的执行时间

    asp.net 通过httpModule计算页面的执行时间

    有时候我们想检测一下网页的执行效率。记录下开始请求时的时间和页面执行完毕后的时间点,这段时间差就是页面的执行时间了。要实现这个功能,通过HttpModule来实现是最方便而且准确的。
    2011-02-02
  • .Net Core 实现图片验证码的实现示例

    .Net Core 实现图片验证码的实现示例

    这篇文章主要介绍了.Net Core 实现图片验证码的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • .NET中OpenFileDialog使用线程报错的解决方法

    .NET中OpenFileDialog使用线程报错的解决方法

    这篇文章主要为大家详细介绍了.NET中OpenFileDialog使用线程报错的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • .net三层结构初探分析

    .net三层结构初探分析

    最近开始对架构开始了研究,当然由于水平不够,先研究了“简单的三层结构”,至于“抽象工厂模式”放后面来研究吧!
    2008-09-09
  • .NET Core实现企业微信消息推送

    .NET Core实现企业微信消息推送

    这篇文章介绍了.NET Core实现企业微信消息推送的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • DataGrid 动态添加模板列 实现代码

    DataGrid 动态添加模板列 实现代码

    模版控件能让用户几乎不用花费任何时间就创建出复杂的用户界面. Asp.net有很多控件都使用了模版技术(DataGrid就是一个例子). 而这些控件都工作得很好, 通常, 模版可以被保存为ascx文件以增加复用性. 很有可能, 事前你是不知道你的控件是怎么布局的, 而且你需要动态的添加一些模版以应付不同的事件.
    2009-04-04

最新评论