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(); }
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)); }