Example #1
0
        public ThumbnailInfo UploadFileAndReturnInfo(FileUploadMessage request)
        {
            Log.Debug(string.Format("Upload file:\n filename:{0}\n fileext:{1}\n keyname:{2}", request.FileName, request.FileExt, request.KeyName));


            if (request.FileData.CanRead == false)
            {
                Log.Debug(string.Format("\"{0}\"文件不可读", request.FileName));

                request.FileData.Close();
                request.FileData.Dispose();

                return null;
            }


            _imageSetting = (ImageSettingConfig)ConfigurationManager.GetSection("imageSetting");


            _imageElement = _imageSetting.ImageCollection[request.KeyName];


            _fileFolder = String.IsNullOrEmpty(_imageElement.RootFolder) ? _imageSetting.Folder : _imageElement.RootFolder;

            string filePath = Path.Combine(_fileFolder, request.FileName + (_imageElement.AsNormalFile ? string.Empty : FileTempExt) + "." + request.FileExt);

            var fileInfo = new FileInfo(filePath);


            if (fileInfo.Directory != null && !fileInfo.Directory.Exists)
            {
                Directory.CreateDirectory(fileInfo.Directory.FullName);
            }

            try
            {
                using (var sourceStream = request.FileData)
                {
                    using (var targetStream = new FileStream(filePath, FileMode.Create, FileAccess.Write, FileShare.None))
                    {

                        const int bufferLen = 4096;
                        byte[] buffer = new byte[bufferLen];
                        int count = 0;
                        while ((count = sourceStream.Read(buffer, 0, bufferLen)) > 0)
                        {
                            targetStream.Write(buffer, 0, count);
                        }

                        targetStream.Close();
                        sourceStream.Close();
                        request.FileData.Close();
                        request.FileData.Dispose();
                    }

                }

                if (_imageElement.Type == 2)
                {
                    var timeSpan = SaveAudioAndReturnDuration(filePath, true);

                    Log.Warn(timeSpan.TotalSeconds);
                    var t = new ThumbnailInfo
                        {
                            Sizes =
                                new Dictionary<string, ImageSize>(1)
                                    {
                                        {
                                            request.KeyName, new ImageSize(0, 0, Int64.Parse(timeSpan.TotalSeconds.ToString("F0")))
                                        }
                                    }
                        };

                    return t;
                }

                if (Pexts.Contains(request.FileExt, StringComparer.OrdinalIgnoreCase) && !_imageElement.AsNormalFile)
                {
                    ThumbnailInfo thumbnailInfoes = new ThumbnailInfo();
                    thumbnailInfoes.Info = new Dictionary<string, long>();
                    thumbnailInfoes.Sizes = new Dictionary<string, ImageSize>();

                    foreach (ThumbElement thumb in _imageElement.ThumbCollection)
                    {
                        string thumbPath = filePath.Substring(0, filePath.IndexOf(FileTempExt)) + "_" + thumb.Width.ToString() + "x" + thumb.Height.ToString() + ".jpg";
                        try
                        {
                            int realWidth;
                            int realHeight;

                            Log.Debug("thumbPath:" + thumbPath);
                            long size = Thumbnail.Instance.MakeThumbnailPicAndReturnSize(filePath, thumbPath, thumb.Width, thumb.Height, thumb.Mode, _imageSetting.ImageQuality, out realWidth, out realHeight, thumbnailInfoes.ExifInfos);

                            thumbnailInfoes.Info.Add(thumb.Key, size);
                            thumbnailInfoes.Sizes.Add(thumb.Key, new ImageSize(realWidth, realHeight));
                        }
                        catch (Exception ex)
                        {
                            Log.Warn(ex);
                            continue;
                        }
                    }

                    return thumbnailInfoes;
                }


                else if (Pexts.Contains(request.FileExt, StringComparer.OrdinalIgnoreCase) && request.ConvertToJPG && _imageElement.AsNormalFile)
                {
                    using (Image bitmap = Image.FromFile(filePath))
                    {

                        bitmap.Save(filePath.Substring(0, filePath.IndexOf("." + request.FileExt)) + ".jpg", ImageFormat.Jpeg);
                    }

                }


                if (!request.SaveOrigin)
                {
                    File.Delete(filePath);
                }
            }
            catch (Exception ex)
            {
                Log.Error(string.Format("上传文件\"{0}\"发生错误:{1}", request.FileName, ex.Message));
            }



            Log.Debug(string.Format("Upload file successful.file: {0}, filekey: {1}", request.FileName, request.KeyName));

            return new ThumbnailInfo();
        }
Example #2
0
        public void UploadFile(FileUploadMessage request)
        {
            Log.Debug(string.Format("Upload file:\n filename:{0}\n fileext:{1}\n keyname:{2}\n saveorigin:{3}\n converttojpg:{4}\n", request.FileName, request.FileExt, request.KeyName, request.SaveOrigin, request.ConvertToJPG));


            if (request.FileData.CanRead == false)
            {
                Log.Debug(string.Format("\"{0}\"文件不可读", request.FileName));

                request.FileData.Close();
                request.FileData.Dispose();

                return;
            }

            _imageSetting = (ImageSettingConfig)ConfigurationManager.GetSection("imageSetting");
            _imageElement = _imageSetting.ImageCollection[request.KeyName];


            _fileFolder = Path.Combine(_imageSetting.Folder, String.IsNullOrEmpty(_imageElement.RootFolder) ? _imageSetting.SubDirectory : _imageElement.RootFolder);

            var filePath = Path.Combine(_fileFolder, request.FileName + (_imageElement.AsNormalFile ? String.Empty : FileTempExt) + "." + request.FileExt);

            Log.Debug(string.Format("filepath:{0}", filePath));

            var fileInfo = new FileInfo(filePath);

            if (fileInfo.Directory != null && !fileInfo.Directory.Exists)
            {
                Directory.CreateDirectory(fileInfo.Directory.FullName);
            }

            try
            {
                using (var sourceStream = request.FileData)
                {
                    using (var targetStream = new FileStream(filePath, FileMode.Create, FileAccess.Write, FileShare.None))
                    {

                        const int bufferLen = 4096;
                        var buffer = new byte[bufferLen];
                        int count = 0;

                        while ((count = sourceStream.Read(buffer, 0, bufferLen)) > 0)
                        {
                            targetStream.Write(buffer, 0, count);
                        }

                        targetStream.Close();
                        sourceStream.Close();
                        request.FileData.Close();
                        request.FileData.Dispose();
                    }
                }

                if (_imageElement.Type == 2)
                {
                    var timeSpan = SaveAudioAndReturnDuration(filePath, true);

                    var t = new ThumbnailInfo
                    {
                        Sizes =
                            new Dictionary<string, ImageSize>(1)
                                    {
                                        {
                                            request.KeyName, new ImageSize(0, 0, Int64.Parse(timeSpan.TotalSeconds.ToString("F0")))
                                        }
                                    }
                    };

                    return;
                    //return t;
                }

                if (Pexts.Contains(request.FileExt, StringComparer.OrdinalIgnoreCase) && !_imageElement.AsNormalFile)
                {

                    foreach (ThumbElement thumb in _imageElement.ThumbCollection)
                    {
                        string thumbPath = filePath.Substring(0, filePath.IndexOf(FileTempExt, System.StringComparison.Ordinal)) + "_" + thumb.Width.ToString(CultureInfo.InvariantCulture) + "x" + thumb.Height.ToString(CultureInfo.InvariantCulture) + ".jpg";
                        try
                        {
                            Thumbnail.Instance.MakeThumbnailPic(filePath, thumbPath, thumb.Width, thumb.Height, thumb.Mode, _imageSetting.ImageQuality);
                            if (Sync2S3)
                            {
                                string keyPath = thumbPath.Replace(_imageSetting.Folder, "");
                                Log.Debug("keyPath:" + keyPath);
                                AwsHelper.Transfer2S3(thumbPath, keyPath);
                            }
                        }
                        catch
                        {
                            continue;
                        }
                    }
                }
                else if (Pexts.Contains(request.FileExt, StringComparer.OrdinalIgnoreCase) && request.ConvertToJPG && _imageElement.AsNormalFile)
                {
                    using (var bitmap = Image.FromFile(filePath))
                    {

                        bitmap.Save(filePath.Substring(0, filePath.IndexOf("." + request.FileExt, System.StringComparison.Ordinal)) + ".jpg", ImageFormat.Jpeg);
                    }

                }

                if (!request.SaveOrigin)
                {
                    File.Delete(filePath);
                }
            }
            catch (Exception ex)
            {
                Log.Error(string.Format("上传文件\"{0}\"发生错误:{1}", request.FileName, ex.Message));
            }

            Log.Debug(string.Format("Upload file successful.file: {0}, filekey: {1}", request.FileName, request.KeyName));
        }