webapi上傳圖片的兩種方式


/// <summary>
        /// App上傳圖片
        /// </summary>
        /// <returns>返回上傳圖片的相對路徑</returns>
        [HttpPost]
        public AppReturn<string> UploadImage()
        {
            AppReturn<string> rModel = new AppReturn<string>();
            //string result = "";
            // 檢查是否是 multipart/form-data
            if (!Request.Content.IsMimeMultipartContent("form-data"))
            {
                InvestmentCommon.Log4NetHelper.Log.Error("不是有效的'form-data'類型");
                rModel.state = 0;
                rModel.msg = "不是有效的'form-data'類型";
                return rModel;
            }


            DateTime dt = DateTime.Now;
            string path = string.Format("/imagestore/{0}/{1}{2}", dt.Year, dt.Month.ToString().PadLeft(2, '0'), dt.Day.ToString().PadLeft(2, '0'));
            string abtPath = HttpContext.Current.Server.MapPath(path);
            if (!InvestmentCommon.FileHelper.CreateDirectory(abtPath))
            {
                InvestmentCommon.Log4NetHelper.Log.Error(string.Format("創建目錄{0}失敗", abtPath));
                rModel.state = 0;
                rModel.msg = "創建圖片目錄失敗";
                return rModel;
            }


            string fileName = "";
            string ext = "";
            string filePath = "";
            try
            {
                HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];//獲取傳統context
                HttpRequestBase request = context.Request;//定義傳統request對象
                HttpFileCollectionBase imgFiles = request.Files;
                for (int i = 0; i < imgFiles.Count; i++)
                {
                    ext = InvestmentCommon.FileHelper.GetExtention(imgFiles[i].FileName);
                    fileName = string.Format("{0}{1}", System.Guid.NewGuid().ToString(), ext);
                    filePath = string.Format("{0}/{1}", path, fileName);
                    imgFiles[i].SaveAs(abtPath + "\\" + fileName);
                    imgFiles[i].InputStream.Position = 0;
                    rModel.data = filePath.Replace("/", "");
                    rModel.state = 1;
                    rModel.msg = "success";
                }


            }
            catch (Exception e)
            {
                InvestmentCommon.Log4NetHelper.Log.Error("圖片保存失敗");
                rModel.state = 0;
                rModel.msg = "圖片保存失敗";
                return rModel;
            }


            //result = Newtonsoft.Json.JsonConvert.SerializeObject(rList);
            return rModel;
        }


        /// <summary>
        /// App上傳圖片
        /// </summary>
        /// <returns>返回上傳圖片的相對路徑</returns>
        [HttpPost]
        public AppReturn<string> UploadImageByBase64(FileUp file)
        {
            AppReturn<string> rModel = new AppReturn<string>();
            if (string.IsNullOrEmpty(file.FileBase64))
            {
                InvestmentCommon.Log4NetHelper.Log.Error("沒有選擇要上傳的圖片");
                rModel.state = 0;
                rModel.msg = "沒有選擇要上傳的圖片";
                return rModel;
            }
            DateTime dt = DateTime.Now;
            string path = string.Format("/imagestore/{0}/{1}{2}", dt.Year, dt.Month.ToString().PadLeft(2, '0'), dt.Day.ToString().PadLeft(2, '0'));
            string abtPath = HttpContext.Current.Server.MapPath(path);
            if (!InvestmentCommon.FileHelper.CreateDirectory(abtPath))
            {
                InvestmentCommon.Log4NetHelper.Log.Error(string.Format("創建目錄{0}失敗", abtPath));
                rModel.state = 0;
                rModel.msg = "創建圖片目錄失敗";
                return rModel;
            }


            string fileName = "";
            string filePath = "";
            try
            {
                byte[] imgByte = Convert.FromBase64String(file.FileBase64);
                MemoryStream ms = new MemoryStream(imgByte);
                Image image = System.Drawing.Image.FromStream(ms);
                fileName = string.Format("{0}.png", System.Guid.NewGuid().ToString());
                filePath = string.Format("{0}/{1}", path, fileName);
                image.Save(abtPath + "\\" + fileName);
                rModel.data = filePath.Replace("/", "");
                rModel.state = 1;
                rModel.msg = "success";
                ms.Close();
                ms.Dispose();               
            }
            catch (Exception e)
            {
                InvestmentCommon.Log4NetHelper.Log.Error("圖片保存失敗");
                rModel.state = 0;
                rModel.msg = "圖片保存失敗";
                return rModel;
            }


            return rModel;
        }     


免責聲明!

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



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