图片上传判断width 等比例压缩

HttpPostedFile oFile = Request.Files["NewFile"];

            // Check if the file has been correctly uploaded
            if (oFile == null || oFile.ContentLength == 0 || !(Convert.ToInt32(HttpContext.GetGlobalResourceObject("SystemInfo", "OpenFileup")) == 1))
            {
                SendResults(202);
                return;
            }

            int iErrorNumber = 0;
            string sFileUrl = "";

            // Get the uploaded file name.
            string sFileName = System.IO.Path.GetFileName(oFile.FileName).Substring(System.IO.Path.GetFileName(oFile.FileName).LastIndexOf(".") + 1).ToLower();
            string TypeName = HttpContext.GetGlobalResourceObject("SystemInfo", "UpfileTypeSettings").ToString();

            if (!TypeName.Contains(sFileName) ||
                oFile.ContentLength >= Convert.ToInt32(HttpContext.GetGlobalResourceObject("SystemInfo", "MaxFileLengthSettingsKB")) * 1024)
                //文件类型判断  文件大小验证
            {
                SendResults(202);
                return;
            }

           

            int iCounter = 0;

            while (true)
            {
                //判断文件是否可以上传
                if (CheckUploadFileExtension(sFileName))
                {
                    string sFilePath = System.IO.Path.Combine(this.UserFilesDirectory, sFileName);

                    if (System.IO.File.Exists(sFilePath))
                    {
                        iCounter++;
                        sFileName =
                            System.IO.Path.GetFileNameWithoutExtension(oFile.FileName) +
                            "(" + iCounter + ")" +
                            System.IO.Path.GetExtension(oFile.FileName);

                        iErrorNumber = 201;
                    }
                    else
                    {
                        if (TypeName.Contains(".gif") || TypeName.Contains(".jpg") || TypeName.Contains("bmp") || TypeName.Contains("png"))
                        {
                            System.Drawing.Image image = System.Drawing.Image.FromStream(oFile.InputStream);

                            int width = image.Width;
                            int height = image.Height;

                            int max = Convert.ToInt32(HttpContext.GetGlobalResourceObject("SystemInfo", "ImageMaxWidth"));
                            if (width > max)
                            {
                                try
                                {
                                    System.Drawing.Image newPic; //定义新位图对象
                                    //String picPath = path + userID + time + fileExtension;
                                    if (width > height)
                                    {
                                        newPic = new Bitmap(image, max, height * max / width); //缩放
                                    }
                                    else
                                    {
                                        newPic = new Bitmap(image, width * max / height, max); //缩放
                                    }
                                    newPic.Save(sFilePath, System.Drawing.Imaging.ImageFormat.Bmp); //将处理后的图片保存成bmp文件
                                    sFileUrl = this.UserFilesPath + sFileName;
                                    break;
                                }
                                catch
                                {
                                }
                            }
                        }

                        oFile.SaveAs(sFilePath);
                        sFileUrl = this.UserFilesPath + sFileName;
                        break;
                    }
                }
                else
                {
                    //不允许上传
                    SendResults(202);
                    break;
                }
            }

            SendResults(iErrorNumber, sFileUrl, sFileName);

posted @ 2011-01-18 10:52  caicainiao  阅读(636)  评论(0编辑  收藏  举报