web api 处理发送过来的文件(图片)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Web;
using System.Web.Http;
using fastJSON;
using System.IO;
using System.Net.Http;
using DoMain;
using System.Web.Configuration;

namespace PreAlert_WebService.Controllers
{
    public class Article_Pic_Controller : ApiController
    {
        /// <summary>
        /// 增加图片服务
        /// </summary>
        /// <param name="jsonParames"></param>
        /// <returns></returns>
        [HttpPost, HttpGet]
        public string Pic_Add(string jsonParames)
        {
            if (!Request.Content.IsMimeMultipartContent())
            {
                throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotAcceptable, "Invalid Request!"));
            }

            HttpRuntimeSection runTime = (HttpRuntimeSection)WebConfigurationManager.GetSection("system.web/httpRuntime");

            int maxRequestLength = (runTime.MaxRequestLength) * 1024;
            int len = System.Web.HttpContext.Current.Request.ContentLength;
            string retJsonStr = "";
            if (string.IsNullOrEmpty(jsonParames) || jsonParames.ToLower() == "jsonparames")
            {

                jsonParames = System.Web.HttpContext.Current.Request.Form["jsonParames"];

            }

            IDictionary<string, object> entityDic = (Dictionary<string, object>)JSON.Instance.Parse(jsonParames);

            string guid = Guid.NewGuid().ToString();//图片唯一ID
            //string app_path = AppDomain.CurrentDomain.BaseDirectory;
            string app_path = System.Configuration.ConfigurationManager.AppSettings["app_path"];
            string[] needParames = { "PicType", "PicSizeByte" };
            //IDictionary<string, object> entityDic = (Dictionary<string, object>)JSON.Instance.Parse(jsonParames);
            foreach (string needParame in needParames)
            {
                if (!entityDic.ContainsKey(needParame))
                {
                    retJsonStr = "{\"ret\":\"0\",\"msg\":\"缺少必须的参数:" + needParame + "}";
                    return retJsonStr;
                }
            }
            //默认png图片格式...
            string PicType = entityDic["PicType"].ToString().Trim() != "" ? entityDic["PicType"].ToString() : "png";
            string Description = entityDic["Description"].ToString();
            string PicPath = "/articlepic/" + CollectItemID.ToString();
            string PicDir = app_path + PicPath;
            string FullPath = PicDir + "/" + guid + "." + PicType;

            int PicSizeByte = 0;
            int.TryParse(entityDic["PicSizeByte"].ToString(), out PicSizeByte);

            HttpRequest request = System.Web.HttpContext.Current.Request;
            HttpFileCollection fileCollection = request.Files;

            // 判断是否有文件
            if (fileCollection.Count > 0)
            {
                // 获取图片文件
                HttpPostedFile httpPostedFile = fileCollection[0];
                // 文件扩展名
                string fileExtension = Path.GetExtension(httpPostedFile.FileName);
                // 验证图片格式
                if (fileExtension.Contains(".jpg") || fileExtension.Contains(".png") || fileExtension.Contains(".bmp") || fileExtension.Contains(".gif"))
                {
                    // 如果目录不存在则要先创建
                    if (!Directory.Exists(PicDir))
                    {
                        Directory.CreateDirectory(PicDir);
                    }
                    httpPostedFile.SaveAs(FullPath);
                    using (DBEntities db = new DBEntities())
                    {
                        Pic apic = new Pic();

                        apic.PicPath = PicPath + "/" + guid + "." + PicType;
                        apic.PicType = PicType;
                        apic.PicSizeByte = PicSizeByte;
                        db.Pic.Add(apic);
                        db.SaveChanges();
                    }
                    retJsonStr = "{\"ret\":\"1\",\"msg\":创建成功\"}";
                    return retJsonStr;
                }
                else
                {
                    retJsonStr = "{\"ret\":\"0\",\"msg\":请选择jpg/png/bmp/gif格式的图片\"}";
                }
            }
            else
            {
                retJsonStr = "{\"ret\":\"0\",\"msg\":图片传输错误:没有发现要上传的图片;\"}";
            }

            retJsonStr = "{\"ret\":\"1\",\"msg\":创建成功\"}";
            return retJsonStr;
        }

    }
}
时间: 2024-10-09 16:21:12

web api 处理发送过来的文件(图片)的相关文章

如果调用ASP.NET Web API不能发送PUT/DELETE请求怎么办?

小分享:我有几张阿里云优惠券,用券购买或者升级阿里云相应产品最多可以优惠五折!领券地址:https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=ohmepe03 理想的RESTful Web API采用面向资源的架构,并使用请求的HTTP方法表示针对目标资源的操作类型.但是理想和现实是有距离的,虽然HTTP协议提供了一系列原生的HTTP方法,但是在具体的网络环境中,很多是不支持的.比如有的浏览器只能发送

Web API删除JSON格式的文件记录

Insus.NET的系列Web Api学习文章,这篇算是计划中最后一篇了,删除JSON格式的文件记录.前一篇<Web Api其中的PUT功能演示>http://www.cnblogs.com/insus/p/4346982.html中学习了怎样更新数据.程序开发涉及到数据的,为了让用户方便管理,一般提供了查询,添加,更新以及删除功能.本篇中是针对文件中的数据进行删除. 下面Insus.NET就对此进行详尽演示.Web Api的一个type: "DELETE".在API控制中

基于spring-boot的web应用,ckeditor上传文件图片文件

说来惭愧,这个应用调试,折腾了我一整天,google了很多帖子,才算整明白,今天在这里做个记录和分享吧,也作为自己后续的参考! 第一步,ckeditor(本博文论及的ckeditor版本4.5.6)的配置图片文件上传功能,默认这个是没有开启的,就不用多说,ckeditor官网上也说的很清楚!http://docs.ckeditor.com 下面简单的说下配置(配置文件algoConfig.js): 1 CKEDITOR.editorConfig = function( config ) { 2

ASP.NET(C#) Web Api通过文件流下载文件到本地实例

下载文件到本地是很多项目开发中需要实现的一个很简单的功能.说简单,是从具体的代码实现上来说的,.NET的文件下载方式有很多种,本示例给大家介绍的是ASP.NET Web Api方式返回HttpResponseMessage下载文件到本地.实现的方法很简单,其中就是读取服务器的指定路径文件流,将其做为返回的HttpResponseMessage的Content.直接贴出DownloadController控件器的代码: using System; using System.Collections.

ASP.NET Web API实践系列02,在MVC4下的一个实例, 包含EF Code First,依赖注入, Bootstrap等

本篇体验在MVC4下,实现一个对Book信息的管理,包括增删查等,用到了EF Code First, 使用Unity进行依赖注入,前端使用Bootstrap美化.先上最终效果: →创建一个MVC4项目,选择Web API模版. →在Models文件夹创建一个Book.cs类. namespace MyMvcAndWebApi.Models { public class Book { public int Id { get; set; } public string Name { get; set

How ASP.NET Web API 2.0 Works?[持续更新中…]

一.概述 RESTful Web API [Web标准篇]RESTful Web API [设计篇] 在一个空ASP.NET Web项目上创建一个ASP.NET Web API 2.0应用 二.路由 ASP.NET的路由系统:URL与物理文件的分离 ASP.NET的路由系统:路由映射 ASP.NET的路由系统:根据路由规则生成URL ASP.NET Web API路由系统的几个核心类型 Web Host下的URL路由 三.消息处理管道 ASP.NET Web API标准的"管道式"设计

angular 4 http 之web api 服务

Angular Http是获取和保存数据的.主要是为了取到我json文件里的数据. 直接上代码吧: 1.  先介绍Promise模式的:(直接代码) heroes.json: 1 2 3 4 5 6 7 8 {   "data": [     { "id": 1, "name": "Windstorm" },     { "id": 2, "name": "Bombasto&q

ASP.NET MVC WEB API必知必会知识点总结

一.理解WEB API:提供基于RESTful架构的WEB服务,通过HTTP请求方法(GET, PUT, POST, DELETE)映射到服务器端相应的ACTION方法(CRUD). RESTful架构: (1)每一个URI代表一种资源:(2)客户端和服务器之间,传递这种资源的某种表现层:(3)客户端通过四个HTTP动词,对服务器端资源进行操作,实现"表现层状态转化". HTTP 的四个主要方法 (GET, PUT, POST, DELETE) 按照下列方式映射为 CURD 操作: G

使用HttpClient消费ASP.NET Web API服务

本篇体验使用HttpClient消费ASP.NET Web API服务,例子比较简单. 依次点击"文件","新建","项目". 选择"ASP.NET Web API"项目. 在Models文件夹下创建Person.cs类. public class Person { public int Id { get; set; } public string FirstName { get; set; } public string L