Ejemplo n.º 1
0
 /// <summary>
 /// 转换文件
 /// </summary>
 /// <param name="source"></param>
 /// <param name="target"></param>
 /// <param name="d"></param>
 /// <returns></returns>
 public static bool Convert(string source, string target, AsposeConvertDelegate d)
 {
     logger.Info("Convert - source=" + source + ", type=" + FileTypeUtil.GetFileType(source));
     if (FileTypeUtil.IsWordFile(source))
     {
         return(WordUtil.ConverToImage(source, target, 300, d));
     }
     if (FileTypeUtil.IsExcelFile(source))
     {
         return(ExcelUtil.ConverToImage(source, target, 300, d));
     }
     if (FileTypeUtil.IsPowerPointFile(source))
     {
         return(PowerpointUtil.ConverToImage(source, target, 1.5F, d));
     }
     if (FileTypeUtil.IsVisioFile(source))
     {
         return(VisioUtil.ConverToImage(source, target, 100, d));
     }
     if (FileTypeUtil.IsPdfFile(source))
     {
         return(PDFUtil.ConverToImage(source, target, 100, d));
     }
     throw new IOException("文件格式当前不支持!");
 }
Ejemplo n.º 2
0
        public string Create(byte[] data, string filename)
        {
            if (data == null || data.Length == 0)
            {
                throw new ArgumentNullException("data");
            }

            var extension = Path.GetExtension(filename);
            var fileType  = FileTypeUtil.DeduceFileTypeFromExtension(extension);
            var now       = DateTime.Now;
            //路径: [文件类型]/[年]/[月日]/[Encode[毫秒]][Encode[随机串]].后缀
            //例如:IMAGE/2016/0314/Xb4J3ims7gC4Qyk4.jpg
            //注意:文件名区分大小写,必须使用Linux文件系统
            //文件句柄: 文件类型年月随机字符串.后缀
            //其中文件类型取类型名称的前五个字符,命名时应该注意!

            //c# GUID目前采用算法4 即前12位是随机数
            //xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx
            var rnd          = BitConverter.ToInt64(Guid.NewGuid().ToByteArray().Take(48).ToArray(), 0);
            var fileTypeName = fileType.ToString().Substring(0, 5).PadLeft(5, '0').ToUpper();
            var year         = string.Format("{0:yyyy}", now);
            var monthAndDay  = string.Format("{0:MMdd}", now);

            var fileName = string.Format("{0}{1}{2}", Encode(GetMillisecondsOfADay(now)),
                                         Encode(rnd),
                                         extension);
            var fileHandle = string.Format("{0}{1}{2}{3}", fileTypeName, year, monthAndDay, fileName);
            var file       = new FileMetadata()
            {
                FileHandle = fileHandle,
                Size       = data.Length,
                Name       = filename,
                CreatedAt  = now,
                FileType   = (int)fileType,
                Path       = Path.Combine(fileTypeName, year, monthAndDay),
                MimeType   = MimeTypeUtil.GetMimeType(extension)
            };

            //save it
            try
            {
                var directory = Path.Combine(fileTypeName, year, monthAndDay);
                if (!DirectoryExists(directory))
                {
                    if (!DirectoryExists(Path.Combine(fileTypeName, year)))
                    {
                        if (!DirectoryExists(fileTypeName))
                        {
                            MakeDirectory(fileTypeName);
                        }
                        MakeDirectory(Path.Combine(fileTypeName, year));
                    }
                    MakeDirectory(directory);
                }
                var ftpRequest = CreateRequest(Path.Combine(directory, fileName));
                ftpRequest.Method        = WebRequestMethods.Ftp.UploadFile;
                ftpRequest.ContentLength = data.Length;
                using (var requestStream = ftpRequest.GetRequestStream())
                {
                    requestStream.Write(data, 0, data.Length);
                }
                using (var response = ftpRequest.GetResponse())
                    using (var reader = new StreamReader(response.GetResponseStream()))
                    {
                    }
                try
                {
                    var md5 = new MD5CryptoServiceProvider().ComputeHash(data);
                    file.Md5 = BitConverter.ToString(md5).Replace("-", string.Empty);
                    //todo insert file meta
                }
                catch (System.Exception error)
                {
                    _logger.Error(string.Format("save filemetadata{0} error", fileHandle), error);
                }
            }
            catch (System.Exception error)
            {
                _logger.Error(string.Format("create error[{0}]", fileHandle), error);
                return(null);
            }
            return(fileHandle);
        }
Ejemplo n.º 3
0
        public string Create(byte[] content, string filename)
        {
            var extension = Path.GetExtension(filename);
            var fileType  = FileTypeUtil.DeduceFileTypeFromExtension(extension);
            var now       = DateTime.Now;
            //路径: [文件类型]/[年]/[月日]/[Encode[毫秒]][Encode[随机串]].后缀
            //文件句柄: 文件类型年月随机字符串.后缀
            //其中文件类型取类型名称的前五个字符,命名时应该注意!
            var rnd          = BitConverter.ToInt64(Guid.NewGuid().ToByteArray().Take(48).ToArray(), 0);
            var fileTypeName = fileType.ToString().Substring(0, 5).PadLeft(5, '0').ToUpper();
            var year         = string.Format("{0:yyyy}", now);
            var monthAndDay  = string.Format("{0:MMdd}", now);

            var fileName = string.Format("{0}{1}{2}", Encode(GetMillisecondsOfADay(now)),
                                         Encode(rnd),
                                         extension);
            var fileHandle = string.Format("{0}{1}{2}{3}", fileTypeName, year, monthAndDay, fileName);
            var file       = new FileMetadata()
            {
                FileHandle = fileHandle,
                Size       = content.Length,
                Name       = filename,
                CreatedAt  = now,
                FileType   = (int)fileType,
                Path       = Path.Combine(fileTypeName, year, monthAndDay),
                MimeType   = MimeTypeUtil.GetMimeType(extension)
            };
            //save file
            var directory = Path.Combine(BaseDirectory, fileTypeName, year, monthAndDay);

            try
            {
                if (!Directory.Exists(directory))
                {
                    if (!Directory.Exists(Path.Combine(BaseDirectory, fileTypeName, year)))
                    {
                        if (!Directory.Exists(Path.Combine(BaseDirectory, fileTypeName)))
                        {
                            Directory.CreateDirectory(Path.Combine(BaseDirectory, fileTypeName));
                        }
                        Directory.CreateDirectory(Path.Combine(BaseDirectory, fileTypeName, year));
                    }
                    Directory.CreateDirectory(directory);
                }
            }
            catch (Exception error)
            {
                _logger.Debug(string.Format("create directory error[{0}]", directory), error);
            }
            try
            {
                System.IO.File.Create(Path.Combine(directory, fileHandle));
                //TODO save metadata to database
            }
            catch (Exception error)
            {
                _logger.Error(string.Format("create error[{0}]", fileHandle), error);
                return(null);
            }

            return(fileHandle);
        }