Example #1
0
        /// <summary>
        /// 文件拷贝
        /// </summary>
        /// <param name="src">来源文件物理路径</param>
        /// <param name="tar">目标文件地址物理路径</param>
        /// <returns></returns>
        public static CommonReturn File_Copy(string src, string tar)
        {
            try
            {
                if (!File.Exists(src))
                {
                    return(CommonReturn.Failed("[" + src + "]文件不存在"));
                }
                //---safe check
                if (SafeSC.FileNameCheck(src))
                {
                    return(CommonReturn.Failed("[" + src + "]文件名异常"));
                }
                if (SafeSC.FileNameCheck(tar))
                {
                    return(CommonReturn.Failed("[" + tar + "]文件名异常"));
                }

                if (!Directory.Exists(Path.GetDirectoryName(tar)))
                {
                    Directory.CreateDirectory(Path.GetDirectoryName(tar));
                }
                if (File.Exists(tar))
                {
                    File.Delete(tar);
                }
                File.Copy(src, tar);
            }
            catch (Exception ex) { return(CommonReturn.Failed(ex.Message)); }
            return(CommonReturn.Success());
        }
Example #2
0
        protected void BtnUpload_Click(object sender, EventArgs e)
        {
            long size = FupFile.FileContent.Length;

            if (size > 10 * 1024 * 1024)
            {
                function.Script(this, "alert('文件不能大于10mb');"); return;
            }
            M_ModelField fieldmod = fieldBll.GetModelByFieldName(ModelID, FieldName);

            if (fieldmod == null)
            {
                return;
            }
            if (SafeSC.FileNameCheck(FupFile.FileName))
            {
                function.Script(this, "alert('此文件格式不允许上传!');"); return;
            }
            if (fieldmod.FieldType.Equals("SqlType") && !SafeSC.IsImage(FupFile.FileName))
            {
                function.Script(this, "alert('只能上传图片!');"); return;
            }
            string content  = fieldmod.Content;
            Stream filedata = FupFile.FileContent;

            byte[] filebyte = new byte[filedata.Length];
            filedata.Read(filebyte, 0, filebyte.Length);
            function.Script(this, "parent.DealwithUploadPic('" + FupFile.FileName + "|" + Convert.ToBase64String(filebyte) + "','FIT_" + FieldName + "');");
            function.Script(this, "parent.DealwithUploadPic('" + FupFile.FileName + "','txt_" + FieldName + "');");
            LblMessage.Text = "文件上传成功";
        }
        //移入ZIP类
        /// <summary>
        /// 从指定站点下载文件,并保存在指定位置,开始位置,完成度(用于ProgressBar使用)
        /// </summary>
        /// <param name="strFileName">本地物理路径</param>
        /// <param name="strUrl">目标Url</param>
        public static void DownloadFile(string strFileName, string strUrl, int begin, string flag)
        {
            if (SafeSC.FileNameCheck(strFileName))
            {
                throw new Exception(strFileName + "取消保存");
            }
            //已完成的,1%长度
            int  CompletedLength = 0;
            long percent = 0; progStatus = "0"; string temp = "0";
            long sPosstion = 0; //磁盘现盘文件的长度
                                //long count = 0;// count += sPosstion,从指定位置开始写入字节
            FileStream FStream;

            if (File.Exists(strFileName))                    //如果文件存在
            {
                FStream   = File.OpenWrite(strFileName);     //打开继续写入,并从尾部开始,用于断点续传
                sPosstion = FStream.Length;
                FStream.Seek(sPosstion, SeekOrigin.Current); //移动文件流中的当前指针
            }
            else
            {
                FStream   = new FileStream(strFileName, FileMode.Create);
                sPosstion = 0;
            }
            //打开网络连接
            try
            {
                HttpWebRequest myRequest = (HttpWebRequest)HttpWebRequest.Create(strUrl);
                //if (CompletedLength > 0)
                //    myRequest.AddRange((int)CompletedLength);//设置Range值,即头,从指定位置开始接收文件..
                //向服务器请求,获得服务器的回应数据流
                HttpWebResponse webResponse = (HttpWebResponse)myRequest.GetResponse();
                long            FileLength  = webResponse.ContentLength;//文件大小
                percent = FileLength / 100;
                Stream myStream  = webResponse.GetResponseStream();
                byte[] btContent = new byte[1024];
                //if (count <= 0) count += sPosstion;//

                //开始写入
                int count = 0;
                while ((count = myStream.Read(btContent, 0, 1024)) > 0) //返回读了多少字节,为0表示全部读完
                {
                    FStream.Write(btContent, 0, count);                 //知道有多少个数字节后再写入
                    CompletedLength += count;
                    if (!(CompletedLength / percent).ToString().Equals(temp))
                    {
                        temp       = (CompletedLength / percent).ToString();
                        progStatus = temp;
                    }
                }
                myStream.Close();
            }
            finally
            {
                FStream.Close();
            }
        }
Example #4
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());
        }
Example #5
0
        /// <summary>
        /// 下载文件至服务器,建议异步调用
        /// </summary>
        /// <param name="url">http文件路径</param>
        /// <param name="vpath">保存,虚拟路径,带文件名</param>
        /// <param name="flag">标记,用于记录状态(Session)</param>
        public static void DownFile(string url, string vpath, ProgMod model)
        {
            string ppath = function.VToP(vpath);

            if (SafeSC.FileNameCheck(ppath))
            {
                throw new Exception(vpath + "文件不允许下载");
            }
            //已下载字节,每一进度是多少字节,每次下载多少字节,进度条状态,
            int        byteLen = 2048;
            FileStream FStream;

            if (File.Exists(ppath))
            {
                File.Delete(ppath);
            }
            FStream = new FileStream(ppath, FileMode.Create);
            //打开网络连接
            try
            {
                HttpWebRequest  myRequest   = (HttpWebRequest)HttpWebRequest.Create(url);
                HttpWebResponse webResponse = (HttpWebResponse)myRequest.GetResponse();
                model.Percent = webResponse.ContentLength / 100;
                Stream myStream  = webResponse.GetResponseStream();
                byte[] btContent = new byte[byteLen];
                //开始写入
                int count = 0;
                while ((count = myStream.Read(btContent, 0, byteLen)) > 0) //返回读了多少字节,为0表示全部读完
                {
                    FStream.Write(btContent, 0, count);                    //知道有多少个数字节后再写入
                    model.CompleteLen += count;
                    model.UpdateProg();
                }
                myStream.Close();
            }
            finally
            {
                FStream.Close();
            }
        }
Example #6
0
        public IActionResult TemplateEdit_Submit()
        {
            if (string.IsNullOrEmpty(GetParam("FileName_T")))
            {
                return(WriteErr("未指定文件名称"));
            }
            string oldfname = Path.GetFileNameWithoutExtension(RealVPath);
            string newfname = GetParam("FileName_T");

            if (SafeSC.FileNameCheck(newfname))
            {
                return(WriteErr("文件名或后缀名不符合规范,不可包含特殊字符"));
            }
            if (string.IsNullOrEmpty(Path.GetExtension(RealVPath)))
            {
                SafeSC.WriteFile(FileDir + newfname + ".html", GetParam("textContent"));
            }
            else
            {
                SafeSC.WriteFile(RealVPath, GetParam("textContent"));
            }
            return(WriteOK("保存成功"));
        }
        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>格式文件预览,请联系管理员提供支持!!");
            }
        }
Example #8
0
        /// <summary>
        /// 从指定服务器上下载文件,支持断点续传
        /// </summary>
        /// <param name="url">目标Url</param>
        /// <param name="vpath">本地虚拟路径</param>
        /// <param name="begin">开始位置,默认为0</param>
        public void DownFile(string url, string vpath, int begin = 0)
        {
            vpath = SafeSC.PathDeal(vpath);
            if (SafeSC.FileNameCheck(vpath))
            {
                throw new Exception("不支持下载[" + Path.GetFileName(vpath) + "]文件");
            }
            string ppath = function.VToP(vpath);

            //已完成的,1%长度
            int  CompletedLength = 0;
            long percent = 0; string temp = "0";
            long sPosstion = 0;//磁盘现盘文件的长度
            //long count = 0;// count += sPosstion,从指定位置开始写入字节
            FileStream FStream;

            if (File.Exists(ppath))
            {
                FStream   = File.OpenWrite(ppath);           //打开继续写入,并从尾部开始,用于断点续传(如果不需要,则应该删除其)
                sPosstion = FStream.Length;
                FStream.Seek(sPosstion, SeekOrigin.Current); //移动文件流中的当前指针
            }
            else
            {
                string dir = Path.GetDirectoryName(ppath);
                if (!Directory.Exists(dir))
                {
                    Directory.CreateDirectory(dir);
                }
                FStream   = new FileStream(ppath, FileMode.Create);
                sPosstion = 0;
            }
            //打开网络连接
            try
            {
                HttpWebRequest myRequest = (HttpWebRequest)HttpWebRequest.Create(url);
                //if (CompletedLength > 0)
                //    myRequest.AddRange((int)CompletedLength);//设置Range值,即头,从指定位置开始接收文件..
                //向服务器请求,获得服务器的回应数据流
                HttpWebResponse webResponse = (HttpWebResponse)myRequest.GetResponse();
                long            FileLength  = webResponse.ContentLength;//文件大小
                percent = FileLength / 100;
                Stream myStream  = webResponse.GetResponseStream();
                byte[] btContent = new byte[1024];
                //if (count <= 0) count += sPosstion;//
                //开始写入
                int count = 0;
                while ((count = myStream.Read(btContent, 0, 1024)) > 0) //返回读了多少字节,为0表示全部读完
                {
                    FStream.Write(btContent, 0, count);                 //知道有多少个数字节后再写入
                    CompletedLength += count;
                    if (!(CompletedLength / percent).ToString().Equals(temp))
                    {
                        temp = (CompletedLength / percent).ToString();
                        //progStatus = temp;
                    }
                }
                myStream.Close();
            }
            finally
            {
                FStream.Close();
            }
        }
Example #9
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));
        }
Example #10
0
        //Html必须编码后再传输,html默认的是将其UrlEncode后传递,服务端再编辑,直接传是不能的
        //public M_Http_Result UploadParam(string url, Dictionary<string, object> postParameters)
        //{
        //    HttpMultipartFormRequest req = new HttpMultipartFormRequest();
        //    //req.config = config;
        //    M_Http_Result result = new M_Http_Result();
        //    result = req.AsyncHttpRequest(url, postParameters, null);
        //    return result;
        //}
        #endregion


        #region 文件下载
        /// <summary>
        /// 从指定服务器上下载文件,支持断点续传
        /// </summary>
        /// <param name="url">目标Url</param>
        /// <param name="vpath">本地虚拟路径</param>
        /// <param name="begin">开始位置,默认为0</param>
        public static void DownFile(string url, string vpath, int begin = 0)
        {
            //尝试除以0,原因:下载的文字过小,占用字节为0
            vpath = SafeSC.PathDeal(vpath);
            if (SafeSC.FileNameCheck(vpath))
            {
                throw new Exception("不支持下载[" + Path.GetFileName(vpath) + "]文件");
            }
            string ppath = function.VToP(vpath);

            //long percent = 0;
            long sPosstion = 0;//磁盘现盘文件的长度
            //long count = 0;// count += sPosstion,从指定位置开始写入字节
            FileStream FStream;

            if (File.Exists(ppath))
            {
                FStream   = File.OpenWrite(ppath);           //打开继续写入,并从尾部开始,用于断点续传(如果不需要,则应该删除其)
                sPosstion = FStream.Length;
                FStream.Seek(sPosstion, SeekOrigin.Current); //移动文件流中的当前指针
            }
            else
            {
                string dir = Path.GetDirectoryName(ppath);
                if (!Directory.Exists(dir))
                {
                    Directory.CreateDirectory(dir);
                }
                try { FStream = new FileStream(ppath, FileMode.Create); }
                catch (Exception ex) { throw new Exception(ex.Message + "||" + ppath); }
                sPosstion = 0;
            }
            //打开网络连接
            Stream myStream = null;

            try
            {
                HttpWebRequest myRequest = (HttpWebRequest)HttpWebRequest.Create(url);
                //if (CompletedLength > 0)
                //    myRequest.AddRange((int)CompletedLength);//设置Range值,即头,从指定位置开始接收文件..
                //向服务器请求,获得服务器的回应数据流
                HttpWebResponse webResponse = (HttpWebResponse)myRequest.GetResponse();
                //long FileLength = webResponse.ContentLength;//文件大小
                //percent = FileLength / 100;
                myStream = webResponse.GetResponseStream();
                byte[] btContent = new byte[1024];
                //开始写入
                int count = 0;
                while ((count = myStream.Read(btContent, 0, 1024)) > 0) //返回读了多少字节,为0表示全部读完
                {
                    FStream.Write(btContent, 0, count);                 //知道有多少个数字节后再写入
                }
            }
            catch (Exception ex)
            {
                if (!ex.Message.Contains("基础连接已经关闭"))
                {
                    throw new Exception("DownFile:" + ex.Message + "|" + url);
                }
            }
            finally
            {
                if (myStream != null)
                {
                    myStream.Close();
                }
                if (FStream != null)
                {
                    FStream.Close();
                }
            }
        }