ASP.NET MVC 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; }
实战计算BOM成本的存储过程
USE [TD_ManagerInfo] GO /****** 对象: StoredProcedure [dbo].[pro_GetBOMList] 脚本日期: 06/20/2013 20:55:43 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: JOY -- Create date: 2013-6-6 -- Description: 根据品号查询所有BOM清单 -- ============================================= ALTER PROCEDURE [dbo].[pro_GetBOMList] -- 存储过程参数 @PROID varchar(100) AS BEGIN --检查临时表 If object_id('tempdb..##BOMINFO') is not null Drop Table ##BOMINFO --创建临时表 Create table ##BOMINFO ( BOM_NO varchar(100) not null, --BOM号 PRD_NO varchar(100) PRIMARY KEY, --品号 PRDNAME varchar(100), --品名 MIN_PURCHASE INT default(0), --最小采购量 PRICE [numeric](18,5) default(0), --单价 PRICESubtotal [numeric](18,5) default(0), --单个部品金额 采购量*单价 SUP_COUNT INT default(0), --供应商/家 ID_NO varchar(100), --子件ID LAYER INT, ) --递归读取BOM表(With前面有语句需要用分好隔开) ;With TBOM as ( Select BOM_NO,PRD_NO,[NAME],ID_NO,QTY from DB_TD02.DB_TD02.dbo.TF_BOM WHERE BOM_NO '" target="_blank">=@PROID+'->' UNION ALL Select B.BOM_NO,B.PRD_NO,B.NAME,B.ID_NO,B.QTY from TBOM inner join DB_TD02.DB_TD02.dbo.TF_BOM B on TBOM.ID_NO=B.BOM_NO ) --Select * from TBOM (测试数据) --根据型号查询BOM记录复制到临时表(层级) Insert into ##BOMINFO(BOM_NO,PRD_NO,PRDNAME,ID_NO) Select B.BOM_NO,B.PRD_NO,B.NAME,B.ID_NO from TBOM B ----------------------------------------------------------------------------------------------------- -------------------------------游标执行对递归后TBOM的其他计算处理------------------------------------- ----------------------------------------------------------------------------------------------------- --申明变量(用户游标复制操作) declare @PRD_NO varchar(100) declare @PRDNAME varchar(100) declare @BomCusCount int --货品对应供应商总数 declare @PRICE numeric(18,8) --部品单价 declare @MIN_PURCHASE int --最小采购量 declare @Layer int --层级 declare @KND varchar(1) --大类代号 declare @IDX1 varchar(10) --中类代号(包装类、喷油件、电镀件...) declare @SUP1 varchar(12) --主供应商 declare @MAXDAYS numeric(18,8) --最长前置期 declare @MAXDAYSVALUE numeric(18,8) --存放最终前置值 Select @MAXDAYSVALUE=0 --初始化最长前置期 Select @MAXDAYS=0 --初始化最长前置期 --声明一个游标cur_BOMINFO,select语句中参数的个数必须要和从游标取出的变量名相同 declare cur_BOMINFO cursor for select PRD_NO from ##BOMINFO --打开游标 Open cur_BOMINFO --读取游标 一条记录插入变量 Fetch next from cur_BOMINFO into @PRD_NO While(@@fetch_status = 0) Begin --根据品号查找对应供应商个数 Select @BomCusCount=COUNT(C.CUS_NO) from DB_TD02.DB_TD02.dbo.PRDT_CUS C WHERE C.PRD_NO =@PRD_NO --修改前Select top 1 @KND=KND,@IDX1=IDX1,@SUP1=SUP1 from DB_TD02.DB_TD02.dbo.PRDT P WHERE P.PRD_NO =@PRD_NO --根据品号供应商信息更新 Update ##BOMINFO set SUP_COUNT=SUP_COUNT+@BomCusCount where PRD_NO=@PRD_NO --查找货品查找单价 Select top 1 @PRICE=isnull(UP_DEF.UP,0.0000) from DB_TD02.DB_TD02.dbo.UP_DEF UP_DEF WHERE PRD_NO=@PRD_NO --根据品号查找单价信息更新 Update ##BOMINFO set PRICE=@PRICE where PRD_NO=@PRD_NO --根据品号查找最小采购量 Select @MIN_PURCHASE=isnull(QTY_MIN,0),@MAXDAYS=NEED_DAYS from DB_TD02.DB_TD02.dbo.PRDT WHERE PRD_NO=@PRD_NO --根据品号查找最先采购量信息更新 Update ##BOMINFO set MIN_PURCHASE=@MIN_PURCHASE where PRD_NO=@PRD_NO --判断最长前置期 IF @MAXDAYS>@MAXDAYSVALUE begin Set @MAXDAYSVALUE=@MAXDAYSVALUE end --继续.... Fetch next from cur_BOMINFO into @PRD_NO End --关闭游标 Close cur_BOMINFO --删除游标 Deallocate cur_BOMINFO --查询结果 --print @MAXDAYSVALUE --Select * from ##BOMINFO END原文地址: http://www.cnblogs.com/iplaycode