Beispiel #1
0
        public async Task <IHttpActionResult> UploadFactoryPhotoFile(int id)
        {
            // Check if the request contains multipart/form-data.
            if (!Request.Content.IsMimeMultipartContent())
            {
                return(Content(HttpStatusCode.UnsupportedMediaType, HttpResponseFormat.UnsupportedMediaType()));
            }

            try
            {
                // Check factory is existing
                FactoryModel factoryModel    = new FactoryModel();
                var          existingFactory = factoryModel.GetByIdForInternal(id);

                //FileHelper fileHelper = new FileHelper();
                BlobStorageHelper storageHelper = new BlobStorageHelper(Global._systemStorageName, Global._systemStorageKey, Global._imageStorageContainer);
                string            root          = Path.GetTempPath();
                var provider = new MultipartFormDataStreamProvider(root);

                // Read the form data.
                string fileAbsoluteUri = "";
                await Request.Content.ReadAsMultipartAsync(provider);

                char[] trimChar = { '\"' };

                //FileData
                foreach (MultipartFileData fileData in provider.FileData)
                {
                    string formColumnName   = fileData.Headers.ContentDisposition.Name.ToLower().Trim(trimChar);
                    string fileExtenionName = fileData.Headers.ContentDisposition.FileName.Split('.')[1].ToLower().Trim(trimChar);
                    if (formColumnName.Equals("image"))
                    {
                        //string formColumnName = fileData.Headers.ContentDisposition.Name;
                        //string fileExtenionName = fileData.Headers.ContentDisposition.FileName.Replace("\"", "").Split('.')[1];
                        string fileExtension = Path.GetExtension(fileData.Headers.ContentDisposition.FileName.Replace("\"", "").ToLower());
                        if (fileExtension.Equals(".jpg", StringComparison.InvariantCultureIgnoreCase) ||
                            fileExtension.Equals(".jpeg", StringComparison.InvariantCultureIgnoreCase) ||
                            fileExtension.Equals(".png", StringComparison.InvariantCultureIgnoreCase))
                        {
                            ImageHelper imageHelper    = new ImageHelper();
                            string      uploadFilePath = String.Format("company-{0}/Factory/{1}", existingFactory.CompanyId, id);
                            fileAbsoluteUri = imageHelper.PublishImage(fileData.LocalFileName, storageHelper, uploadFilePath, Global._factoryPhotoWidthHeight, Global._imageBgColor, Global._imageFormat);

                            //string uploadFilePath = String.Format("company-{0}/Factory/{1}-default-{2}{3}", existingFactory.CompanyId, id, (Int32)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds, fileExtension);
                            //fileAbsoluteUri = storageHelper.SaveFiletoStorage(fileData.LocalFileName, uploadFilePath);
                        }
                        else
                        {
                            return(Content(HttpStatusCode.BadRequest, HttpResponseFormat.Error("Unsupport File Type.")));
                        }
                    }
                }

                if (fileAbsoluteUri.Equals(""))
                {
                    return(Content(HttpStatusCode.BadRequest, HttpResponseFormat.Error("File is empty")));
                }

                //Edit factory logo path
                factoryModel.UpdatePhotoURL(id, fileAbsoluteUri);

                return(Content(HttpStatusCode.OK, new
                {
                    imageURL = fileAbsoluteUri
                }));
            }
            catch (CDSException cdsEx)
            {
                return(Content(HttpStatusCode.BadRequest, CDSException.GetCDSErrorMessageByCode(cdsEx.ErrorId)));
            }
            catch (Exception ex)
            {
                string        logAPI     = "[Put] " + Request.RequestUri.ToString();
                StringBuilder logMessage = LogHelper.BuildExceptionMessage(ex);
                Global._appLogger.Error(logAPI + logMessage);

                return(Content(HttpStatusCode.InternalServerError, ex));
            }
        }
Beispiel #2
0
        public async Task <IHttpActionResult> UploadLogoFile(int id)
        {
            string logAPI = "[Put] " + Request.RequestUri.ToString();

            // Check if the request contains multipart/form-data.
            if (!Request.Content.IsMimeMultipartContent())
            {
                return(Content(HttpStatusCode.UnsupportedMediaType, HttpResponseFormat.UnsupportedMediaType()));
            }

            CompanyModel companyModel = new CompanyModel();
            //FileHelper fileHelper = new FileHelper();
            BlobStorageHelper storageHelper = new BlobStorageHelper(Global._systemStorageName, Global._systemStorageKey, Global._imageStorageContainer);
            string            root          = Path.GetTempPath();
            var provider = new MultipartFormDataStreamProvider(root);

            try
            {
                CompanyModel.Format_Detail company = companyModel.GetById(id);
            }
            catch (CDSException cdsEx)
            {
                return(Content(HttpStatusCode.BadRequest, CDSException.GetCDSErrorMessageByCode(cdsEx.ErrorId)));
            }
            catch (Exception ex)
            {
                StringBuilder logMessage = LogHelper.BuildExceptionMessage(ex);
                Global._appLogger.Error(logAPI + logMessage);

                return(Content(HttpStatusCode.InternalServerError, ex));
            }

            try
            {
                // Read the form data.
                string LogoAbsoluteUri = "", IconAbsoluteUri = "";
                await Request.Content.ReadAsMultipartAsync(provider);

                //FileData
                foreach (MultipartFileData fileData in provider.FileData)
                {
                    string fileExtension = Path.GetExtension(fileData.Headers.ContentDisposition.FileName.Replace("\"", "").ToLower());
                    if (fileExtension.Equals(".jpg", StringComparison.InvariantCultureIgnoreCase) ||
                        fileExtension.Equals(".jpeg", StringComparison.InvariantCultureIgnoreCase) ||
                        fileExtension.Equals(".png", StringComparison.InvariantCultureIgnoreCase))
                    {
                        ImageHelper imageHelper    = new ImageHelper();
                        string      uploadFilePath = String.Format("company-{0}", id);

                        LogoAbsoluteUri = imageHelper.PublishImage(fileData.LocalFileName, storageHelper, uploadFilePath, Global._companyLogoWidthHeight, Global._imageBgColor, Global._imageFormat);
                        IconAbsoluteUri = imageHelper.PublishImage(fileData.LocalFileName, storageHelper, uploadFilePath, Global._companyIconWidthHeight, Global._imageBgColor, Global._imageFormat);
                    }
                    else
                    {
                        return(Content(HttpStatusCode.BadRequest, HttpResponseFormat.Error("Unsupport File Type.")));
                    }
                }

                if (LogoAbsoluteUri.Equals(""))
                {
                    return(Content(HttpStatusCode.BadRequest, HttpResponseFormat.Error("File is empty or wrong extension name.")));
                }

                //Edit company logo path
                companyModel.UpdateLogoURL(id, LogoAbsoluteUri, IconAbsoluteUri);
                //RedisCacheHelper.DeleteCompanyCache(id);
                return(Content(HttpStatusCode.OK, HttpResponseFormat.Success(LogoAbsoluteUri)));
            }
            catch (CDSException cdsEx)
            {
                return(Content(HttpStatusCode.BadRequest, CDSException.GetCDSErrorMessageByCode(cdsEx.ErrorId)));
            }
            catch (System.Exception ex)
            {
                StringBuilder logMessage = LogHelper.BuildExceptionMessage(ex);
                Global._appLogger.Error(logAPI + logMessage);

                return(Content(HttpStatusCode.InternalServerError, ex));
            }
        }