Beispiel #1
0
        public IActionResult Index()
        {
            string fileVPath = "";

            if (!string.IsNullOrEmpty(VPath))
            {
                fileVPath = SafeSC.PathDeal(VPath);
                if (!fileVPath.ToLower().StartsWith("/uploadfiles/"))
                {
                    return(WriteErr("该目录下的文件不支持预览"));
                }
            }
            else if (!string.IsNullOrEmpty(FileId))
            {
                B_User_Cloud cloudBll = new B_User_Cloud();
                M_User_Cloud cloudMod = cloudBll.SelReturnModel(FileId);
                if (cloudMod == null)
                {
                    return(WriteErr("文件不存在!"));
                }
                fileVPath = cloudMod.VPath + cloudMod.SFileName;
            }
            else
            {
                return(WriteErr("未指定文件"));
            }
            string filePath = function.VToP(fileVPath);
            string exName   = System.IO.Path.GetExtension(fileVPath).ToLower().Replace(".", "");//doc

            if (string.IsNullOrEmpty(exName))
            {
                return(WriteErr("文件无后缀名"));
            }
            if (!System.IO.File.Exists(filePath))
            {
                return(WriteErr("文件[" + fileVPath + "]不存在"));
            }
            if (SafeSC.FileNameCheck(fileVPath))
            {
                return(WriteErr("文件名异常,请去除特殊符号,或更换后缀名"));
            }
            else if (exName.Equals("config"))
            {
                return(WriteErr("该类型文件不提供预览服务!!"));
            }
            /*---------------------------------------------------------------------------------------------------*/
            ViewBag.filePath  = filePath;
            ViewBag.fileVPath = fileVPath;
            ViewBag.exName    = exName;
            return(View());
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!string.IsNullOrEmpty(Request["vpath"]))
            {
                vpath = Server.UrlDecode(Request["vpath"]);
                while (vpath.Contains("//"))
                {
                    vpath = vpath.Replace("//", "/");
                }
            }
            else if (!string.IsNullOrEmpty(Request["File"]))//Guid,Plat_Doc
            {
                //检测公司等信息
                M_User_Plat upMod   = B_User_Plat.GetLogin();
                B_Plat_File fileBll = new B_Plat_File();
                M_Plat_File fileMod = fileBll.SelReturnModel(Request["File"]);
                if (upMod == null || upMod.UserID == 0)
                {
                    function.WriteErrMsg("你尚未登录能力中心,请先登录!");
                }
                if (fileMod == null)
                {
                    function.WriteErrMsg("文件不存在!");
                }
                if (upMod.CompID != fileMod.CompID)
                {
                    function.WriteErrMsg("你没有该文档的访问权限!");
                }
                vpath = fileMod.VPath + fileMod.SFileName;
            }
            else if (!string.IsNullOrEmpty(Request["CloudFile"]))
            {
                B_User_Cloud cloudBll = new B_User_Cloud();
                M_User_Cloud cloudMod = cloudBll.SelReturnModel(Request["CloudFile"]);
                if (cloudMod == null)
                {
                    function.WriteErrMsg("云端文件不存在!");
                }
                if (cloudMod.UserID != buser.GetLogin().UserID)
                {
                    function.WriteErrMsg("你无权访问该文件!");
                }
                vpath = cloudMod.VPath + cloudMod.SFileName;
            }
            else
            {
                function.WriteErrMsg("你没有指定文件");
            }
            vpath = vpath.ToLower().Replace("/uploadfiles/", "");
            vpath = "/uploadfiles/" + SafeSC.PathDeal(vpath);
            string ppath  = Server.MapPath(vpath);
            string exName = Path.GetExtension(vpath).ToLower().Replace(".", "");//doc

            if (!File.Exists(function.VToP(vpath)))
            {
                function.WriteErrMsg(Path.GetFileName(Request.QueryString["vpath"]) + "文件不存在!");
            }
            if (!badmin.CheckLogin() && !buser.CheckLogin())
            {
                function.WriteErrMsg("请先登录,再使用该页面!!!");
            }
            else if (SafeSC.FileNameCheck(vpath))
            {
                function.WriteErrMsg("文件名异常,请去除特殊符号,或更换后缀名");
            }
            else if (Path.GetExtension(vpath).Equals(".config"))
            {
                function.WriteErrMsg("为安全考虑,该类型文件不提供预览服务!!");
            }
            /*------------*/
            if (!string.IsNullOrEmpty(Request.QueryString["width"]))
            {
                viewWidth = Convert.ToInt32(Request.QueryString["width"]);
            }
            if (!string.IsNullOrEmpty(Request.QueryString["height"]))
            {
                viewHeight = Convert.ToInt32(Request.QueryString["height"]);
            }
            /*------------------------------------------------------------------*/
            if (WordEx.Contains(exName))//Office类预览
            {
                generalDiv.Visible = true;
                string pdfPath = vpath + ".pdf";
                if (!File.Exists(Server.MapPath(pdfPath)))
                {
                    Document doc = new Document(ppath);
                    doc.Save(Server.MapPath(pdfPath), SaveFormat.Pdf);
                }
                pdfDiv.Visible = true;
                pdfUrl         = VpathToUrl(pdfPath);
                //if (DeviceHelper.GetBrower() == DeviceHelper.Brower.IE)
                //{
                //    function.WriteErrMsg("IE不支持Word预览,请使用Chrome,Edge或其他浏览器");
                //}
            }
            else if (ExcelEx.Contains(exName))
            {
                //generalDiv.Visible = true;
                //string pdfPath = vpath + ".pdf";
                //if (!File.Exists(Server.MapPath(pdfPath)))
                //{
                //    Aspose.Cells.Workbook excel = new Aspose.Cells.Workbook(Server.MapPath(vpath));
                //    excel.Save(Server.MapPath(pdfPath), Aspose.Cells.SaveFormat.Pdf);
                //}
                //pdfDiv.Visible = true;
                //pdfUrl = VpathToUrl(pdfPath);
                function.WriteErrMsg("暂未开放Excel预览,请联系官方技术支持!");
            }
            else if (exName.Equals("pdf"))
            {
                //if (DeviceHelper.GetBrower() == DeviceHelper.Brower.IE)
                //{
                //    function.WriteErrMsg("IE不支持PDF预览,请使用Chrome,Edge或其他浏览器");
                //}
                pdfDiv.Visible = true;
                pdfUrl         = VpathToUrl(vpath);
            }
            else if (ImgEx.Contains(exName))
            {
                imgDiv.Visible = true;
                imgUrl         = vpath;
            }
            else if (exName.Equals("html") || exName.Equals("htm"))
            {
                Server.Transfer(vpath);
            }
            else if (exName.Equals("txt"))
            {
                ViewTxt.Visible = true;
                ViewTxt.Text    = SafeSC.ReadFileStr(vpath);
                ViewTxt.Width   = viewWidth;
                ViewTxt.Height  = viewHeight;
            }
            else if (VideoEx.Contains(exName))
            {
                videoDiv.Visible = true;
                function.Script(this, "PlayVideo();");
            }
            else
            {
                function.WriteErrMsg("暂不支持<span style='color:#0066cc;'>[" + exName + "]</span>格式文件预览,请联系管理员提供支持!!");
            }
        }
Beispiel #3
0
        public IActionResult UploadFileHandler()
        {
            //HttpRequest Request = context.Request;
            //context.Response.ContentType = "text/plain";
            //context.Request.ContentEncoding = System.Text.Encoding.GetEncoding("UTF-8");
            //context.Response.ContentEncoding = System.Text.Encoding.GetEncoding("UTF-8");
            var file = Request.Form.Files["Filedata"];

            if (file == null)
            {
                file = Request.Form.Files["file"];//接受Uploadify或WebUploader传参,优先Uploadify
            }
            if (file == null || file.Length < 1)
            {
                return(Content(Failed.ToString()));
            }
            if (SafeSC.FileNameCheck(file.FileName))
            {
                throw new Exception("不允许上传该后缀名的文件");
            }
            M_UserInfo mu = buser.GetLogin();

            if (adminMod == null && mu.IsNull)
            {
                throw new Exception("未登录");
            }
            /*-------------------------------------------------------------------------------------------*/
            M_User_Plat upMod = new B_User_Plat().SelReturnModel(mu.UserID);
            string      uploadPath = SiteConfig.SiteOption.UploadDir.TrimEnd('/') + "/", filename = "", ppath = "", result = "0";//上传根目录,文件名,上物理路径,结果
            string      action = GetParam("action"), value = GetParam("value");

            try
            {
                switch (action)
                {
                    #region OA与能力中心
                case "OAattach":    //OA--公文||事务--附件
                                    //uploadPath += "OA/" + mu.UserName + mu.UserID + "/" + DateTime.Now.ToString("yyyyMMdd") + "/";
                    uploadPath = ZLHelper.GetUploadDir_User(mu, "OA");
                    ppath      = function.VToP(uploadPath);
                    //判断是否有同名文件的存在
                    break;

                case "Blog":    //能力中心--博客
                    uploadPath = B_Plat_Common.GetDirPath(upMod, B_Plat_Common.SaveType.Blog);
                    ppath      = function.VToP(uploadPath);
                    break;

                case "Plat_Doc":    //能力中心--我的文档
                    uploadPath = B_Plat_Common.GetDirPath(upMod, B_Plat_Common.SaveType.Person) + SafeSC.PathDeal(GetParam("Dir"));
                    ppath      = function.VToP(uploadPath);
                    break;

                case "Plat_Doc_Common":    //能力中心--公司文档
                    uploadPath = B_Plat_Common.GetDirPath(upMod, B_Plat_Common.SaveType.Company) + SafeSC.PathDeal(GetParam("Dir"));
                    ppath      = function.VToP(uploadPath);
                    break;

                case "Plat_Task":    //能力中心--任务中心附件
                    int tid = Convert.ToInt32(value);
                    ZoomLa.Model.Plat.M_Plat_Task taskMod = new B_Plat_Task().SelReturnModel(tid);
                    uploadPath = B_Plat_Common.GetDirPath(upMod, B_Plat_Common.SaveType.Plat_Task) + taskMod.TaskName + "/";
                    break;

                case "Plat_Project":    //能力中心--项目
                    int pid = Convert.ToInt32(value);
                    ZoomLa.Model.Plat.M_Plat_Pro proMod = new B_Plat_Pro().SelReturnModel(pid);
                    uploadPath = B_Plat_Common.GetDirPath(upMod, B_Plat_Common.SaveType.Plat_Task) + proMod.Name + "/";
                    break;

                    #endregion
                case "ModelFile":    //组图,多图等
                {
                    int nodeid = Convert.ToInt32(value);
                    //M_Node nodeMod = new B_Node().GetNodeXML(nodeid);
                    string exname = Path.GetExtension(file.FileName).Replace(".", "");
                    //string fpath = nodeMod.NodeDir + "/" + exname + "/" + DateTime.Now.ToString("yyyy/MM/");
                    uploadPath = ZLHelper.GetUploadDir_System("field", "images", "yyyyMMdd");
                    filename   = DateTime.Now.ToString("HHmmss") + function.GetRandomString(6, 2) + "." + exname;
                }
                break;

                case "admin_custom":    //管理员上传,自定义路径
                {
                    if (adminMod == null || adminMod.AdminId < 1)
                    {
                        throw new Exception("管理员未登录");
                    }
                    uploadPath = GetParam("save");       //BannerAdd
                }
                break;

                default:    //通常格式,不需做特殊处理的格式但必须登录
                    if (mu.UserID > 0)
                    {
                        //uploadPath = context.Server.UrlDecode(uploadPath + "User/" + mu.UserName + mu.UserID + "/");
                        uploadPath = ZLHelper.GetUploadDir_User(mu, "User", "", "");
                    }
                    else if (adminMod != null)
                    {
                        //uploadPath = context.Server.UrlDecode(uploadPath + "Admin/" + adminMod.AdminName + adminMod.AdminId + "/");
                        uploadPath = ZLHelper.GetUploadDir_Admin(adminMod, "", "", "yyyyMMdd");
                    }
                    else
                    {
                        //注册等页面用户未登录
                        uploadPath = ZLHelper.GetUploadDir_System("user", "register", DateTime.Now.ToString("yyyyMMdd"));
                    }
                    break;
                }
                string uploadDir = Path.GetDirectoryName(function.VToP(uploadPath));
                if (!Directory.Exists(uploadDir))
                {
                    SafeSC.CreateDir(function.PToV(uploadDir));
                }
                if (action.Equals("Plat_Doc") || action.Equals("Plat_Doc_Common"))
                {
                    #region 能力中心文档
                    M_Plat_File fileMod = new M_Plat_File();
                    B_Plat_File fileBll = new B_Plat_File();
                    fileMod.FileName  = file.FileName;
                    fileMod.SFileName = function.GetRandomString(12) + Path.GetExtension(file.FileName);
                    fileMod.VPath     = uploadPath.Replace("//", "/");
                    fileMod.UserID    = upMod.UserID.ToString();
                    fileMod.CompID    = upMod.CompID;
                    //SafeSC.SaveFile(uploadPath, file, fileMod.SFileName);
                    fileMod.FileSize = new FileInfo(ppath + fileMod.SFileName).Length.ToString();
                    fileBll.Insert(fileMod);
                    #endregion
                }
                else if (action.Equals("Cloud_Doc"))
                {
                    #region 用户中心云盘
                    if (!buser.CheckLogin())
                    {
                        throw new Exception("云盘,用户未登录");
                    }
                    M_User_Cloud cloudMod = new M_User_Cloud();
                    B_User_Cloud cloudBll = new B_User_Cloud();
                    uploadPath         = HttpUtility.UrlDecode(cloudBll.H_GetFolderByFType(GetParam("type"), mu)) + GetParam("value");
                    cloudMod.FileName  = file.FileName;
                    cloudMod.SFileName = function.GetRandomString(12) + Path.GetExtension(file.FileName);
                    cloudMod.VPath     = (uploadPath + "/").Replace("//", "/");
                    cloudMod.UserID    = mu.UserID;
                    cloudMod.FileType  = 1;
                    //result = SafeSC.SaveFile(cloudMod.VPath, file, cloudMod.SFileName);
                    //if (SafeSC.IsImage(cloudMod.SFileName))
                    //{
                    //    string icourl = SiteConfig.SiteOption.UploadDir + "YunPan/" + mu.UserName + mu.UserID + "/ico" + value + "/";
                    //    if (!Directory.Exists(function.VToP(icourl))) { SafeSC.CreateDir(icourl); }
                    //    ImgHelper imghelp = new ImgHelper();
                    //    imghelp.CompressImg(file, 100, icourl + cloudMod.SFileName);
                    //}
                    cloudMod.FileSize = new FileInfo(function.VToP(cloudMod.VPath) + cloudMod.SFileName).Length.ToString();
                    cloudBll.Insert(cloudMod);
                    #endregion
                }
                else
                {
                    //string fname = CreateFName(file.FileName);
                    //if (SafeC.IsImageFile(file.FileName) && file.Length > (5 * 1024 * 1024))//图片超过5M则压缩
                    //{
                    //    result = uploadPath + function.GetRandomString(6) + fname;
                    //    new ImgHelper().CompressImg(file, 5 * 1024, result);
                    //}
                    //else
                    //{
                    result = SafeC.SaveFile(uploadPath, filename, file.OpenReadStream(), (int)file.Length);
                    //}
                    //添加水印
                    //if (WaterModuleConfig.WaterConfig.EnableUserWater)
                    //{
                    //    //未以管理员身份登录,并有会员身份登录记录
                    //    if (adminMod == null && !mu.IsNull)
                    //    {
                    //        Image img = WaterImages.DrawFont(ImgHelper.ReadImgToMS(result), mu.UserName + " " + DateTime.Now.ToString("yyyy/MM/dd"), 9);
                    //        ImgHelper.SaveImage(result, img);
                    //    }
                    //}
                    //else if (DataConverter.CStr(context.Request["IsWater"]).Equals("1"))
                    //{
                    //    //前台主动标识需要使用水印
                    //    result = ImgHelper.AddWater(result);
                    //}
                }
                ZLLog.L(ZLEnum.Log.fileup, new M_Log()
                {
                    UName   = mu.UserName,
                    Source  = Request.RawUrl(),
                    Message = "上传成功|文件名:" + file.FileName + "|" + "保存路径:" + uploadPath
                });
            }
            catch (Exception ex)
            {
                ZLLog.L(ZLEnum.Log.fileup, new M_Log()
                {
                    UName   = mu.UserName,
                    Source  = Request.RawUrl(),
                    Message = "上传失败|文件名:" + file.FileName + "|" + "原因:" + ex.Message
                });
            }
            return(Content(result));
        }