C#上傳圖片


//一般處理程序
        public void GetImageFromWeb()
        {

            //創建文件夾

            //2016-10-14 dq
            string filePath = "~/ProductImage/";
            string mapFilePath;
            mapFilePath = HttpContext.Current.Server.MapPath(filePath);
            if (!Directory.Exists(mapFilePath))
            {
                Directory.CreateDirectory(mapFilePath);
            }
            filePath += userEntity.User_ID + "/";
            mapFilePath = HttpContext.Current.Server.MapPath(filePath);
            if (!Directory.Exists(mapFilePath))
            {
                Directory.CreateDirectory(mapFilePath);
            }
             //2016-10-14 注釋 dq


            //寫入數據庫的路徑
            string imgUrl = "/ProductImage/" + userEntity.User_ID + "/";

            // 圖片數據

            HttpFileCollection files = System.Web.HttpContext.Current.Request.Files;
            string fileName = files[0].FileName;
            string name = System.IO.Path.GetFileName(fileName);
            Stream stream = files[0].InputStream;
            byte[] bytes = new byte[stream.Length];
            stream.Read(bytes, 0, bytes.Length);
            // 設置當前流的位置為流的開始
            stream.Seek(0, SeekOrigin.Begin);
            ResImgUpLoadData entity = WS.UploadImgs(bytes, mapFilePath, name, imgUrl, userEntity);

            BaseReturn(entity);

        }

 

 

//C#代碼
  #region 圖片上傳
        /// <summary>
        // 功能簡述:接口公開方法,圖片上傳
        // 開發文檔:無
        // 開發團隊:新產品組
        // 設計:鄧
        // 分析:鄧
        // 代碼:鄧
        // 開發時間:2016.3.10
        // 代碼檢查:
        // 是否在使用:是
        /// <summary>
        /// 上傳圖片
        /// </summary>
        /// <param name="bytes">圖片信息</param>
        /// <param name="pFileName">文件夾名稱</param>
        /// <param name="pImgName">圖片名稱</param>
        ///  <param name="pImgPath">寫入數據庫的圖片路徑</param>
        ///  <param name="pUserInfo">操作人</param>
        /// <returns></returns>
        /// 

        public ProductOnShelvesDML.ResImgUpLoadData UploadImgs(byte[] bytes, string pFileName, string pImgName, string pImgPath, UserDML.UserLoginInfo pUserInfo)
        {
            return pUploadImgs(bytes, pFileName,pImgName, pImgPath,pUserInfo);
        }

        private ProductOnShelvesDML.ResImgUpLoadData pUploadImgs(byte[] bytes,string pFileName,string pImgName, string pImgPath,UserDML.UserLoginInfo pUserInfo)
        {
            ProductOnShelvesDML.ResImgUpLoadData objResult=new ProductOnShelvesDML.ResImgUpLoadData();
            //V_User_DB_Info objUserDBRes;
            //PublicCommonDML.ResComm objResComm;
            //Common objCommonDB;

            //objResult = new ProductOnShelvesDML.ResImgUpLoadData();
            //objCommonDB = new Common();
            Common objCommonDB = new Common();
            PublicCommonDML.ResComm objResComm = new PublicCommonDML.ResComm(); ;


            try
            {
                string CommomString = "";//保存連接實體String
                // 驗證用戶信息,並獲得連接實體
                // 代碼:鄧奇
                // 開發時間:2016-10-17
                SYSCEntityDBAddLogic objSYSCEntityDBAddLogic = new SYSCEntityDBAddLogic();
                objResComm = objSYSCEntityDBAddLogic.GetUserDBString(pUserInfo.User_ID, pUserInfo.User_PWD);
                if (objResComm.ResState == PublicCommonDML.ResFlag.Success)
                {
                    CommomString = objSYSCEntityDBAddLogic.ConectionSring;
                }
                else
                {
                    objResult.ResComm = objResComm;
                    return objResult;
                }

                //服務器端創建文件夾並保存在WS端

                //string filePath = "myImg";
                //string mapFilePath;
                //mapFilePath = HttpContext.Current.Server.MapPath(filePath);
                //if (!Directory.Exists(mapFilePath))
                //    Directory.CreateDirectory(mapFilePath);
                //filePath += pUserInfo.User_ID + "/";
                //mapFilePath = HttpContext.Current.Server.MapPath(filePath);
                //if (!Directory.Exists(mapFilePath))
                //    Directory.CreateDirectory(mapFilePath);
                //filePath += pUserInfo.User_ID + "/";
                //mapFilePath = HttpContext.Current.Server.MapPath(filePath);
                //if (!Directory.Exists(mapFilePath))
                //    Directory.CreateDirectory(mapFilePath);
                // 圖片數據
                //Stream stream = new MemoryStream(bytes);//數據轉換
                //MemoryStream ms = new MemoryStream();
                //System.Drawing.Image img = System.Drawing.Image.FromStream(stream);
                //img.Save(pFileName + pImgName);//保存
                //ms.Close();
                //string path = mapFilePath + pImgName;
                //objResult.ResComm.ResState = PublicCommonDML.ResFlag.Success;
                //objResult.ResComm.ResMessage = path;//返回圖片路徑
                //return objResult;


                ////pFileName-----不需從前端傳進,由配置文件設置
                //string PhysicalAddress = System.Configuration.ConfigurationSettings.AppSettings["PhysicalAddress"];//存放圖片的物理位置以及名稱
                //pFileName = @PhysicalAddress;
                //pFileName += pUserInfo.User_ID + "\\";
                //if (!Directory.Exists(pFileName))
                //{
                //    Directory.CreateDirectory(pFileName);//創建文件夾
                //}
                //string IPAddress = System.Configuration.ConfigurationSettings.AppSettings["IPAddress"];//存放圖片的物理位置對應的項目IP



                //創建文件夾(在一般處理程序完成)並保存在WEB端
               
                //限制圖片格式
                bool Isimage = false;
                string suff = pImgName.Substring(pImgName.LastIndexOf('.'), pImgName.Length - pImgName.LastIndexOf('.'));  //獲取文件后綴
                string[] allowExtension = { ".jpg", ".jpeg", ".gif", ".bmp", ".png", ".JPG", ".JPEG", ".GIF", ".BMP", ".PNG" };   
                for (int i = 0; i < allowExtension.Length; i++)                 
                {
                    if (suff == allowExtension[i])
                    {
                        Isimage = true;
                        break;
                    }
                    else
                    { Isimage = false; }
                }
                if (!Isimage)
                {
                    objResult.ResComm.ResState = PublicCommonDML.ResFlag.Fail;
                    objResult.ResComm.ResMessage = "圖片格式不正確,上傳失敗";
                    return objResult;
                }


                // 圖片數據
                Stream stream = new MemoryStream(bytes);//數據轉換
                if (stream.Length > 1024000) //1M
                {
                    objResult.ResComm.ResState = PublicCommonDML.ResFlag.Fail;
                    objResult.ResComm.ResMessage = "圖片大小超過1M,上傳失敗";
                    return objResult;
                }
                else
                {
                    MemoryStream ms = new MemoryStream();
                    System.Drawing.Image img = System.Drawing.Image.FromStream(stream);
                    string imgName = DateTime.Now.ToString("yyyyMMddHHmmssffff") + suff;  //圖片名稱
                    img.Save(pFileName + imgName);//保存
                    ms.Close();

                    string path = pFileName + imgName;//圖片全路徑
                    objResult.ResComm.ResState = PublicCommonDML.ResFlag.Success;
                    objResult.img_url = pImgPath+imgName;//返回圖片相對路徑
                    objResult.ResComm.ResMessage = "上傳成功";
                }
                
                return objResult;

            }
            catch (Exception ex)
            {
                string strMsg;
                string strErrMsg;
                strMsg = pUserInfo.User_ID + "\r\n" + pUserInfo.User_PWD + "\r\n" + ACCPCWS.MyCommons.Common.DMLToXML(pImgName.GetType(), pImgName);
                strErrMsg = LogLogic.WriteLog(ex, "E100008", strMsg);
                if (strErrMsg == "")
                {
                    objResult.ResComm.ResState = PublicCommonDML.ResFlag.Error;
                    objResult.ResComm.ResMessage = "系統服務器維護中,請稍后重試。";
                }
                else
                {
                    objResult.ResComm.ResState = PublicCommonDML.ResFlag.SysErrorMsg;
                    objResult.ResComm.ResMessage = strErrMsg;
                }
            }

            return objResult;
        }


        #endregion

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM