コード例 #1
0
ファイル: EKFileUpload.cs プロジェクト: xiaocaiyuen/ShuCMS
        /// <summary>
        /// 生成缩略图,默认100*100
        /// </summary>
        /// <param name="sourcePath">源路径</param>
        /// <param name="toPath">目标路径</param>
        /// <returns></returns>
        public static void ImageThumbs(string sourcePath, string toPath)
        {
            string[] strArr   = EKFile.AllFiles(sourcePath);
            string   fileName = "";

            for (int i = 0; i < strArr.Length; i++)
            {
                if (strArr[i].Contains("Thumbs.db"))
                {
                    continue;
                }
                if (!MS_ConfigBLL.UploadImageType.ToLower().Contains(strArr[i].Split('.')[1]))
                {
                    continue;
                }
                fileName = strArr[i].Remove(0, strArr[i].ToLower().LastIndexOf("\\"));
                if (!EKFile.ExistFile(toPath + "\\" + fileName))
                {
                    if (!EKFile.ExistsDirectory(toPath))
                    {
                        EKFile.CreateDirectory(toPath);
                    }
                    ImageUpLoad(strArr[i], toPath + "\\" + fileName, 100, 100);
                }
            }
        }
コード例 #2
0
        public void Save(EKFile file)
        {
            var files = Get();

            if (file.IsNew())
            {
                var maxId = files.Count == 0 ? 1 : files.Max(i => i.Id) + 1;
                file.Id          = maxId;
                file.DateCreated = DateTime.Now;
                files.Add(file);
            }
            else
            {
                var fileToEdit = files.Where(i => i.Id == file.Id).Single();
                fileToEdit.Title        = file.Title;
                fileToEdit.Description  = file.Description;
                fileToEdit.FileName     = file.FileName;
                fileToEdit.DateModified = DateTime.Now;
            }
            Persist(files);
        }
コード例 #3
0
ファイル: EKImage.cs プロジェクト: xiaocaiyuen/ShuCMS
        /// <summary>
        /// 保存图片
        /// </summary>
        /// <param name="imagepath">保存路径</param>
        /// <param name="bitmap">图片内容</param>
        /// <param name="xObject">图片格式</param>
        private static void ImageSave(string imagepath, System.Drawing.Image bitmap, System.Drawing.Imaging.ImageFormat xObject)
        {
            // 以下代码为保存图片时,设置压缩质量
            EncoderParameters encoderParams = new EncoderParameters();

            long[] quality = new long[1];
            quality[0] = 255;
            EncoderParameter encoderParam = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, quality);

            encoderParams.Param[0] = encoderParam;
            //获得包含有关内置图像编码解码器的信息的ImageCodecInfo 对象.
            ImageCodecInfo[] arrayICI = ImageCodecInfo.GetImageEncoders();
            ImageCodecInfo   jpegICI  = null;

            for (int x = 0; x < arrayICI.Length; x++)
            {
                if (arrayICI[x].FormatDescription.ToLower().Equals("jpeg"))
                {
                    jpegICI = arrayICI[x];
                    //设置JPEG编码
                    break;
                }
            }

            if (jpegICI != null)
            {
                //System.Web.HttpContext.Current.Response.Write("a");
                EKFile.DeleteFile(imagepath);
                EKFileUpload.doCreatrDir(imagepath);
                bitmap.Save(imagepath, jpegICI, encoderParams);
            }
            else
            {
                //System.Web.HttpContext.Current.Response.Write("b");
                EKFile.DeleteFile(imagepath);
                EKFileUpload.doCreatrDir(imagepath);
                bitmap.Save(imagepath, xObject);
            }
        }
コード例 #4
0
ファイル: EKHtml.cs プロジェクト: xiaocaiyuen/ShuCMS
        /// <summary>
        /// 保存远程图片,替换图片链接为本地,返回替换后内容
        /// </summary>
        /// <param name="html">html代码</param>
        /// <param name="dt">生成时间</param>
        /// <param name="reg">图片正则表达式</param>
        /// <param name="webRoot">补全图片访问域名。 例:http://www.abc.com</param>
        /// <returns></returns>
        public static string SaveImage(string html, DateTime dt, string reg, string webRoot)
        {
            System.Net.WebClient WC = new System.Net.WebClient();

            //是否保存远程图片
            if (1 == 1)
            {
                //<img.+?src=\"(?<url>.+?)\".+?>
                string reg_img = "<img.+?src=\"(?<url>.+?)\".+?>";
                if (reg != "")
                {
                    reg_img = reg;
                }
                MatchCollection mc = Regex.Matches(html, reg_img, RegexOptions.IgnoreCase);

                string imgUrl = "";
                string imgfix = "jpg";
                //格式 盘:/UploadPath/webfile/201001/01/
                string savePath = "/" + MS_ConfigBLL.UploadPath + "/" + "webfile/" + dt.ToString("yyyyMM") + "/" + dt.ToString("dd") + "/";
                //格式 时分秒毫秒
                string imgName   = "";
                string imgNewUrl = "";
                foreach (Match math in mc)
                {
                    imgName = DateTime.Now.ToString("HHmmssfff");
                    imgUrl  = math.Groups["url"].Value;
                    if (imgUrl.StartsWith("http://") || imgUrl.StartsWith("https://") || imgUrl.StartsWith("www."))
                    {
                        Uri uri = new Uri(imgUrl);
                        if (EKFile.ExistFile(EKFile.GetMapPath(uri.AbsolutePath)))
                        {
                            //本地存在,下次循环
                            continue;
                        }

                        //后缀
                        string[] tempAry = imgUrl.Split('.');
                        if (tempAry.Length > 0)
                        {
                            imgfix = tempAry[tempAry.Length - 1];
                        }

                        imgNewUrl = savePath + imgName + "." + imgfix;
                        if (!EKFile.ExistsDirectory(EKFile.GetMapPath("/") + savePath))
                        {
                            EKFile.CreateDirectory(EKFile.GetMapPath("/") + savePath);
                        }

                        try
                        {
                            WC.DownloadFile(imgUrl, EKFile.GetMapPath("/") + imgNewUrl);
                            WC.Dispose();
                            //保存成功,则替换内容中图片链接
                            html = html.Replace(imgUrl, webRoot + imgNewUrl);
                        }
                        catch (Exception err)
                        {
                            new MS_LogBLL().AddLogAdmin(MS_LogBLL.LogLevel.ERROR, "保存远程图片错误" + err.Message);
                            return(html);
                        }
                    }
                }
            }

            return(html);
        }
コード例 #5
0
ファイル: EKFileUpload.cs プロジェクト: xiaocaiyuen/ShuCMS
        /// <summary>
        /// 批量生成目录下所有图片缩略图
        /// </summary>
        /// <param name="spath">全文件路径</param>
        /// <param name="isChild">子目录是否生成</param>
        public static void CreateSImg(string spath, bool isChild)
        {
            DirectoryInfo[] ChildDirectory;                            //子目录集
            FileInfo[]      NewFileInfo;                               //当前所有文件
            string          path            = spath;
            DirectoryInfo   FatherDirectory = new DirectoryInfo(path); //当前目录

            ChildDirectory = FatherDirectory.GetDirectories("*.*");    //得到子目录集

            //根目录文件
            NewFileInfo = FatherDirectory.GetFiles();
            foreach (FileInfo DirFile in NewFileInfo)//获取此级目录下的所有文件
            {
                if (!DirFile.FullName.ToLower().EndsWith(".jpg") && !DirFile.FullName.ToLower().EndsWith(".png") && !DirFile.FullName.ToLower().EndsWith(".gif") && !DirFile.FullName.ToLower().EndsWith(".ico") && !DirFile.FullName.ToLower().EndsWith(".bmp"))
                {
                    //不是 图片 返回。
                    continue;
                }
                string sfile = ""; //小
                string mfile = ""; //中

                sfile = DirFile.FullName.ToLower().Replace(EKFile.GetMapPath("/" + MS_ConfigBLL.UploadPath).ToLower(), EKFile.GetMapPath("/") + "/" + MS_ConfigBLL.UploadPath_X + "/" + MS_ConfigBLL.UploadPath);
                mfile = DirFile.FullName.ToLower().Replace(EKFile.GetMapPath("/" + MS_ConfigBLL.UploadPath).ToLower(), EKFile.GetMapPath("/") + "/" + MS_ConfigBLL.UploadPath_Z + "/" + MS_ConfigBLL.UploadPath);

                EKFile.CreateDirectory(mfile.Remove(mfile.LastIndexOf("\\")));
                EKFile.CreateDirectory(sfile.Remove(sfile.LastIndexOf("\\")));

                try
                {
                    if (DirFile.FullName.ToLower().EndsWith(".gif") || DirFile.FullName.ToLower().EndsWith(".ico"))
                    {
                        //gif会动,不处理。ico 不处理
                        EKFile.CopyFile(DirFile.FullName, sfile);
                        EKFile.CopyFile(DirFile.FullName, mfile);
                    }
                    else
                    {
                        if (!File.Exists(sfile))
                        {
                            EKFileUpload.ImageUpLoad(DirFile.FullName, sfile, 150, 150);
                        }
                        if (!File.Exists(mfile))
                        {
                            EKFileUpload.ImageUpLoad(DirFile.FullName, mfile, 500, 500);
                        }
                    }
                }
                catch
                {
                    //m_new.NewsTitle = DirFile.FullName + "-----" + zfile;
                    //b_new.Add(m_new);
                    continue;
                }
            }

            //子目录是否生成
            if (isChild)
            {
                foreach (DirectoryInfo dirInfo in ChildDirectory)//目录
                {
                    if (dirInfo.Attributes.ToString().Contains("Hidden"))
                    {
                        continue;
                    }
                    CreateSImg(dirInfo.FullName, isChild);
                }
            }
        }
コード例 #6
0
ファイル: EKWord.cs プロジェクト: xiaocaiyuen/ShuCMS
        /// <summary>
        /// Word转HTMl
        /// </summary>
        /// <param name="path">word文件路径 带盘符</param>
        /// <returns></returns>
        public static string WordToHtml(string wordPath)
        {
            Microsoft.Office.Interop.Word.Application word = new Microsoft.Office.Interop.Word.Application();
            Type wordType = word.GetType();

            Microsoft.Office.Interop.Word.Documents docs = word.Documents;
            Object oMissing = System.Reflection.Missing.Value;
            // 打开文件
            Type docsType = docs.GetType();

            //应当先把文件上传至服务器然后再解析文件为html
            string filePath = wordPath;

            Microsoft.Office.Interop.Word.Document doc = (Microsoft.Office.Interop.Word.Document)docsType.InvokeMember("Open",
                                                                                                                       System.Reflection.BindingFlags.InvokeMethod, null, docs, new Object[] { filePath, true, true });

            // 转换格式,另存为html
            Type docType = doc.GetType();

            //被转换的html文档保存的位置
            string saveFileName = "";
            string ext          = EKFileUpload.getExtend(wordPath).ToLower();

            if (ext == "doc")
            {
                saveFileName = wordPath.Replace(".doc", "");
            }
            else if (ext == "docx")
            {
                saveFileName = wordPath.Replace(".docx", "");
            }
            else
            {
            }

            //另存为html页面
            docType.InvokeMember("SaveAs", System.Reflection.BindingFlags.InvokeMethod,
                                 null, doc, new object[] { saveFileName, Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatFilteredHTML });

            // 退出 Word
            wordType.InvokeMember("Quit", System.Reflection.BindingFlags.InvokeMethod, null, word, null);

            //doc.Close(ref oMissing, ref oMissing, ref oMissing);
            try
            {
                docs.Close(ref oMissing, ref oMissing, ref oMissing);
                word.Quit(ref oMissing, ref oMissing, ref oMissing);
            }
            catch (Exception ex)
            {
                new MS_LogBLL().AddLogAdmin(MS_LogBLL.LogLevel.ERROR, "word转换失败" + ex.Message);
            }
            GC.Collect();

            //读取html 页面
            string html = "";

            //特别处理.有"."号的的文件名.直接读.  不用加.htm
            if (saveFileName.Contains("."))
            {
                html = EKFile.ReadFile(saveFileName);
            }
            else
            {
                html = EKFile.ReadFile(saveFileName + ".htm");
            }

            //补全图片地址
            html = EKHtml.ImageWebRoot(html, "http://" + System.Web.HttpContext.Current.Request.Url.Authority + "/files/temp/", "<img[\\s\\S]+?src=\"(?<url>.+?)\">");

            //保存页面图片
            html = EKHtml.SaveImage(html, DateTime.Now, "<img[\\s\\S]+?src=\"(?<url>.+?)\">");

            //删除临时文件.也可保留
            if (saveFileName.Contains("."))
            {
                EKFile.DeleteFile(saveFileName);
            }
            else
            {
                EKFile.DeleteFile(saveFileName + ".htm");
            }
            //删除目录
            if (EKFile.ExistsDirectory(saveFileName + ".files"))
            {
                EKFile.DeleteDirectoryAnd(saveFileName + ".files");
                EKFile.DeleteDirectory(saveFileName + ".files");
            }
            EKFile.DeleteFile(wordPath);

            return(html);
        }