Esempio n. 1
0
        /// <summary>
        /// 上传Web文件
        /// </summary>
        /// <param name="productGroupInfoMedia"></param>
        /// <returns></returns>
        public ProductGroupInfoMediaEntity UploadWebFile(ProductGroupInfoMediaEntity productGroupInfoMedia, string strCommonSKUNumber)
        {
            try
            {
                //根据文件路径下载文件到Byte[]
                WebClient myWebClient = new WebClient();
                //WebProxy proxy = new WebProxy("ssproxy", 8080);

                //proxy.BypassProxyOnLocal = true;
                //proxy.UseDefaultCredentials = true;

                //myWebClient.Proxy = proxy;

                productGroupInfoMedia.ChunckData    = myWebClient.DownloadData(productGroupInfoMedia.FileWebPath);
                productGroupInfoMedia.IsFirstChunck = true;
                productGroupInfoMedia.IsLastChunck  = true;
                productGroupInfoMedia.FileGuid      = Guid.NewGuid();

                //上传到临时文件
                productGroupInfoMedia = UploadFile(productGroupInfoMedia, strCommonSKUNumber);

                //保存文件并生成套图
                productGroupInfoMedia = SaveFile(productGroupInfoMedia, strCommonSKUNumber);

                return(productGroupInfoMedia);
            }
            catch (Exception ex)
            {
                throw new BusinessException(ex.Message);
            }
        }
Esempio n. 2
0
        /// <summary>
        /// 处理sendor portal上传的图片,包括新品创建和图片更新
        /// </summary>
        ///
        public DefaultDataContract UploadSendorPortalImageList(int ProductRequestSysno, int productGroupSysNo, int comskuSysNo, string comsku, EntityHeader header)
        {
            DefaultDataContract returnValue = new DefaultDataContract();
            string faults = string.Empty;
            List <ItemVendorProductRequestFileEntity> imageList = SellerPortalProductDescAndImageDA.GetProductRequestImageList(ProductRequestSysno, "O");

            if (imageList.Count <= 0)
            {
                return(returnValue);
            }

            //取商品图片数
            int currentPicNumber = SellerPortalProductDescAndImageDA.GetCommonInfoPicNumber(comskuSysNo) + 1;

            string photoFolderPathOnServer = ConfigurationManager.AppSettings["PhotoFolderPathOnServer"].Trim();

            ProductGroupInfoMediaEntity productgroupinfomediaentity = new ProductGroupInfoMediaEntity();

            productgroupinfomediaentity.Header = header;
            //图片类型
            productgroupinfomediaentity.FileType = "I";

            foreach (ItemVendorProductRequestFileEntity image in imageList)
            {
                //图片路径
                productgroupinfomediaentity.FileWebPath = image.Path.ToLower().Contains("http://") ? image.Path : photoFolderPathOnServer + image.Path;

                try
                {
                    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(new Uri(productgroupinfomediaentity.FileWebPath));
                    ((HttpWebResponse)request.GetResponse()).Close();

                    //文件名
                    if (currentPicNumber == 1)
                    {
                        productgroupinfomediaentity.FileName = comsku + ".jpg";
                    }
                    else
                    {
                        productgroupinfomediaentity.FileName = comsku + "-" + currentPicNumber.ToString().PadLeft(2, '0') + ".jpg";
                    }

                    UploadWebFile(productgroupinfomediaentity, comsku);
                }
                catch (BusinessException ex)
                {
                    faults += image.ImageName + "上传失败,失败原因:" + ex.Message;
                    SellerPortalProductDescAndImageBP.WriteLog("\r\n" + DateTime.Now + image.ImageName + "上传失败,失败原因:" + ex.Message + " 处理失败......");

                    //如果失败,Count + 1
                    SellerPortalProductDescAndImageDA.SetProductRequestImageCount(image);
                    continue;
                }

                //保证图片编号连续性,待改进为直接取最大编号。
                currentPicNumber++;

                //插入图片关联
                //imageBp.InsertCommonInfoImage(productGroupSysNo, comskuSysNo, header);
                //上传成功更新产品图片状态
                image.Status = "F";
                SellerPortalProductDescAndImageDA.SetProductRequestImageStatus(image);

                if (!faults.Equals(string.Empty))
                {
                    returnValue.Faults = new MessageFaultCollection();
                    returnValue.Faults.Add(new MessageFault());
                    returnValue.Faults[0].ErrorDescription = faults;
                }
            }

            return(returnValue);
        }
Esempio n. 3
0
        /// <summary>
        /// 文件保存到相对路径,并重命名
        /// </summary>
        /// <param name="productGroupInfoMedia"></param>
        public ProductGroupInfoMediaEntity SaveFile(ProductGroupInfoMediaEntity productGroupInfoMedia, string commonSKUNumber)
        {
            try
            {
                string savePath = "";

                //读取图片根据GroupSysNo分段存储信息
                string fileFix = GetFileFixByType(productGroupInfoMedia.FileType);

                //读取文件相对存储路径
                savePath = GetFileSavePath(fileFix);

                //临时文件名
                string sfileName = productGroupInfoMedia.FileGuid.ToString();
                string dfileName = productGroupInfoMedia.FileName;

                //int fileNameNo = 0;

                //fileNameNo = ProductImageDA.GetGroupInfoMaxImage(productGroupInfoMedia.ProductGroupSysno,productGroupInfoMedia.FileType, productGroupInfoMedia.Header.CompanyCode);
                //dfileName = string.Format("NeweggShowPic{0}-{1}{2}", productGroupInfoMedia.ProductGroupSysno.ToString(), fileNameNo.ToString(), fileFix);

                savePath += GetSubFolderName(dfileName);

                //创建图片与商品组关联信息以及图片与商品关联信息
                ProductGroupInfoImageEntity productImage = new ProductGroupInfoImageEntity();
                //productImage.IsShow = "Y";
                productImage.ProductGroupSysno = productGroupInfoMedia.ProductGroupSysno;

                productImage.ResourceUrl = dfileName;

                productImage.Status = "A";
                productImage.Type   = productGroupInfoMedia.FileType;
                productImage.Header = productGroupInfoMedia.Header;

                //取得文件名中CommonInfoSkuNumber
                //string commonSKUNumber = "";
                //var re = new Regex(@"^([^\._]+)(_(([0-9]+)|(0[1-9]?)))?\..+?$", RegexOptions.IgnoreCase);
                //var match = re.Match(productGroupInfoMedia.FileName);
                //if (match.Success) commonSKUNumber = match.Groups[1].Value;

                SellerPortalProductDescAndImageDA.CreateProductGroupInfoImage(productImage);

                //创建商品与图片关联信息
                SellerPortalProductDescAndImageDA.CreateProductCommonInfoImage(productImage, commonSKUNumber);

                //配置存储路径
                foreach (string localPath in LocalPathList)
                {
                    string filePath = localPath + savePath.Replace("/", "\\");


                    //判断文件夹是否存在
                    if (!Directory.Exists(filePath))
                    {
                        Directory.CreateDirectory(filePath);
                    }

                    //判断上传的文件是否为图片,如果为图片需要进行套图处理
                    if (fileFix == ".jpg")
                    {
                        using (Image uploadImage = Image.FromFile(TemporaryPath + sfileName))
                        {
                            //判断是否为标准图片
                            if (CheckImagePixels(uploadImage))
                            {
                                //重命名文件
                                FileCopy(TemporaryPath + sfileName, dfileName, filePath);
                            }
                            else
                            {
                                //非标准图片需将临时文件压缩为标准图片
                                SaveFixedImage(uploadImage, 800, 800, filePath, "Original", dfileName, true);
                            }
                        }

                        using (Image uploadImage = Image.FromFile(filePath + dfileName))
                        {
                            SaveFixedImageCase(uploadImage, filePath, dfileName);
                        }
                    }
                    else
                    {
                        //重命名文件
                        FileCopy(TemporaryPath + sfileName, dfileName, filePath);
                    }
                }

                //删除临时文件
                File.Delete(TemporaryPath + sfileName);

                return(productGroupInfoMedia);
            }
            catch (Exception ex)
            {
                throw new BusinessException(ex.Message);
            }
        }
Esempio n. 4
0
        /// <summary>
        /// 上传文件
        /// </summary>
        /// <param name="productGroupInfoImage"></param>
        /// <returns></returns>
        public ProductGroupInfoMediaEntity UploadFile(ProductGroupInfoMediaEntity productGroupInfoMedia, string commonSKUNumber)
        {
            //文件后缀
            string     fileFix = "";
            FileStream fs      = null;

            try
            {
                //判断上传文件是否为第一次上传
                if (productGroupInfoMedia.IsFirstChunck)
                {
                    //取得文件名中CommonInfoSkuNumber
                    //string commonSKUNumber = "";

                    //var re = new Regex(@"^([^\._]+)(_(([0-9]+)|(0[1-9]?)))?\..+?$", RegexOptions.IgnoreCase);
                    //var re = new Regex(@"(\w+[/])+\w{2,5}(-\w{2,5})+(_\w{2,5})*\.jpg", RegexOptions.IgnoreCase);
                    //var match = re.Match(productGroupInfoMedia.FileName);

                    //Check上传文件名是否合法
                    //if (match.Success)
                    //{
                    //    commonSKUNumber = match.Groups[1].Value;
                    //}
                    //else
                    //{
                    //    throw new BusinessException("上传文件名不合法,请检查上传文件名称。");
                    //}

                    //根据取得商品组信息
                    ProductGroupInfoEntity groupInfo = SellerPortalProductDescAndImageDA.GetProductGroupInfoByCommonSku(commonSKUNumber, productGroupInfoMedia.Header.CompanyCode);

                    if (groupInfo == null)
                    {
                        throw new BusinessException("上传文件名不属于任何商品组,请检查上传文件名称。");
                    }


                    //判断ProductGroupSysno如果大于0,则需要Check文件名是否属于该组
                    if (productGroupInfoMedia.ProductGroupSysno > 0)
                    {
                        //Check文件名是否属于该组
                        if (productGroupInfoMedia.ProductGroupSysno != groupInfo.SysNo)
                        {
                            throw new BusinessException("上传文件不属于该组。");
                        }
                    }

                    productGroupInfoMedia.ProductGroupSysno = groupInfo.SysNo;

                    //如果为第一段文件需要判断文件类型是否合法
                    fileFix = GetFileFix(productGroupInfoMedia.ChunckData);

                    //合法创建文件,否则抛出异常
                    if (!fileFix.Equals(GetFileFixByType(productGroupInfoMedia.FileType)))
                    {
                        throw new BusinessException("上传文件类型不合法,请检查上传文件类型。");
                    }

                    //判断文件夹是否存在
                    if (!Directory.Exists(TemporaryPath))
                    {
                        Directory.CreateDirectory(TemporaryPath);
                    }

                    //创建临时文件
                    fs = File.Create(TemporaryPath + productGroupInfoMedia.FileGuid.ToString());
                }
                else
                {
                    //读取临时文件
                    fs = File.Open(TemporaryPath + productGroupInfoMedia.FileGuid.ToString(), FileMode.Append);
                }

                //循环将数据流写入临时文件进行保存
                foreach (byte chunck in productGroupInfoMedia.ChunckData)
                {
                    fs.WriteByte(chunck);
                }

                fs.Close();
                fs.Dispose();

                productGroupInfoMedia.ChunckData = null;

                return(productGroupInfoMedia);
            }
            catch (Exception ex)
            {
                throw new BusinessException(ex.Message);
            }
            finally
            {
                if (fs != null)
                {
                    fs.Close();
                    fs.Dispose();
                }
            }
        }