public static string SaveFiles(SiteInfo siteInfo, string content) { var originalLinkHrefs = RegexUtils.GetOriginalLinkHrefs(content); foreach (var originalLinkHref in originalLinkHrefs) { if (!PageUtils.IsProtocolUrl(originalLinkHref) || StringUtils.StartsWithIgnoreCase(originalLinkHref, PageUtils.ApplicationPath) || StringUtils.StartsWithIgnoreCase(originalLinkHref, siteInfo.Additional.WebUrl)) { continue; } var fileExtName = PageUtils.GetExtensionFromUrl(originalLinkHref); if (!EFileSystemTypeUtils.IsDownload(EFileSystemTypeUtils.GetEnumType(fileExtName))) { continue; } var fileName = GetUploadFileName(siteInfo, originalLinkHref); var directoryPath = GetUploadDirectoryPath(siteInfo, fileExtName); var filePath = PathUtils.Combine(directoryPath, fileName); try { if (!FileUtils.IsFileExists(filePath)) { WebClientUtils.SaveRemoteFileToLocal(originalLinkHref, filePath); if (EFileSystemTypeUtils.IsImage(PathUtils.GetExtension(fileName))) { FileUtility.AddWaterMark(siteInfo, filePath); } } var fileUrl = PageUtility.GetSiteUrlByPhysicalPath(siteInfo, filePath, true); content = content.Replace(originalLinkHref, fileUrl); } catch { // ignored } } return(content); }
public void Main() { try { var request = new AuthenticatedRequest(); if (!string.IsNullOrEmpty(request.GetQueryString("siteId")) && !string.IsNullOrEmpty(request.GetQueryString("fileUrl")) && string.IsNullOrEmpty(request.GetQueryString("contentId"))) { var siteId = request.GetQueryInt("siteId"); var fileUrl = TranslateUtils.DecryptStringBySecretKey(request.GetQueryString("fileUrl")); if (PageUtils.IsProtocolUrl(fileUrl)) { PageUtils.Redirect(fileUrl); return; } var siteInfo = SiteManager.GetSiteInfo(siteId); var filePath = PathUtility.MapPath(siteInfo, fileUrl); var fileType = EFileSystemTypeUtils.GetEnumType(PathUtils.GetExtension(filePath)); if (EFileSystemTypeUtils.IsDownload(fileType)) { if (FileUtils.IsFileExists(filePath)) { PageUtils.Download(HttpContext.Current.Response, filePath); return; } } else { PageUtils.Redirect(PageUtility.ParseNavigationUrl(siteInfo, fileUrl, false)); return; } } else if (!string.IsNullOrEmpty(request.GetQueryString("filePath"))) { var filePath = TranslateUtils.DecryptStringBySecretKey(request.GetQueryString("filePath")); var fileType = EFileSystemTypeUtils.GetEnumType(PathUtils.GetExtension(filePath)); if (EFileSystemTypeUtils.IsDownload(fileType)) { if (FileUtils.IsFileExists(filePath)) { PageUtils.Download(HttpContext.Current.Response, filePath); return; } } else { var fileUrl = PageUtils.GetRootUrlByPhysicalPath(filePath); PageUtils.Redirect(PageUtils.ParseNavigationUrl(fileUrl)); return; } } else if (!string.IsNullOrEmpty(request.GetQueryString("siteId")) && !string.IsNullOrEmpty(request.GetQueryString("channelId")) && !string.IsNullOrEmpty(request.GetQueryString("contentId")) && !string.IsNullOrEmpty(request.GetQueryString("fileUrl"))) { var siteId = request.GetQueryInt("siteId"); var channelId = request.GetQueryInt("channelId"); var contentId = request.GetQueryInt("contentId"); var fileUrl = TranslateUtils.DecryptStringBySecretKey(request.GetQueryString("fileUrl")); var siteInfo = SiteManager.GetSiteInfo(siteId); var channelInfo = ChannelManager.GetChannelInfo(siteId, channelId); var contentInfo = ContentManager.GetContentInfo(siteInfo, channelInfo, contentId); DataProvider.ContentDao.AddDownloads(siteId, ChannelManager.GetTableName(siteInfo, channelInfo), channelId, contentId); if (!string.IsNullOrEmpty(contentInfo?.GetString(BackgroundContentAttribute.FileUrl))) { if (PageUtils.IsProtocolUrl(fileUrl)) { PageUtils.Redirect(fileUrl); return; } var filePath = PathUtility.MapPath(siteInfo, fileUrl, true); var fileType = EFileSystemTypeUtils.GetEnumType(PathUtils.GetExtension(filePath)); if (EFileSystemTypeUtils.IsDownload(fileType)) { if (FileUtils.IsFileExists(filePath)) { PageUtils.Download(HttpContext.Current.Response, filePath); return; } } else { PageUtils.Redirect(PageUtility.ParseNavigationUrl(siteInfo, fileUrl, false)); return; } } } } catch { // ignored } HttpContext.Current.Response.Write("下载失败,不存在此文件!"); }
public void Main() { var isSuccess = false; try { var request = new AuthRequest(); if (!string.IsNullOrEmpty(request.GetQueryString("siteId")) && !string.IsNullOrEmpty(request.GetQueryString("fileUrl")) && string.IsNullOrEmpty(request.GetQueryString("contentId"))) { var siteId = request.GetQueryInt("siteId"); var fileUrl = TranslateUtils.DecryptStringBySecretKey(request.GetQueryString("fileUrl")); if (PageUtils.IsProtocolUrl(fileUrl)) { isSuccess = true; PageUtils.Redirect(fileUrl); } else { var siteInfo = SiteManager.GetSiteInfo(siteId); var filePath = PathUtility.MapPath(siteInfo, fileUrl); var fileType = EFileSystemTypeUtils.GetEnumType(PathUtils.GetExtension(filePath)); if (EFileSystemTypeUtils.IsDownload(fileType)) { if (FileUtils.IsFileExists(filePath)) { isSuccess = true; PageUtils.Download(HttpContext.Current.Response, filePath); } } else { isSuccess = true; PageUtils.Redirect(PageUtility.ParseNavigationUrl(siteInfo, fileUrl, false)); } } } else if (!string.IsNullOrEmpty(request.GetQueryString("filePath"))) { var filePath = TranslateUtils.DecryptStringBySecretKey(request.GetQueryString("filePath")); var fileType = EFileSystemTypeUtils.GetEnumType(PathUtils.GetExtension(filePath)); if (EFileSystemTypeUtils.IsDownload(fileType)) { if (FileUtils.IsFileExists(filePath)) { isSuccess = true; PageUtils.Download(HttpContext.Current.Response, filePath); } } else { isSuccess = true; var fileUrl = PageUtils.GetRootUrlByPhysicalPath(filePath); PageUtils.Redirect(PageUtils.ParseNavigationUrl(fileUrl)); } } else if (!string.IsNullOrEmpty(request.GetQueryString("siteId")) && !string.IsNullOrEmpty(request.GetQueryString("channelId")) && !string.IsNullOrEmpty(request.GetQueryString("contentId")) && !string.IsNullOrEmpty(request.GetQueryString("fileUrl"))) { var siteId = request.GetQueryInt("siteId"); var channelId = request.GetQueryInt("channelId"); var contentId = request.GetQueryInt("contentId"); var fileUrl = TranslateUtils.DecryptStringBySecretKey(request.GetQueryString("fileUrl")); var siteInfo = SiteManager.GetSiteInfo(siteId); var nodeInfo = ChannelManager.GetChannelInfo(siteId, channelId); var tableName = ChannelManager.GetTableName(siteInfo, nodeInfo); var contentInfo = DataProvider.ContentDao.GetContentInfo(tableName, contentId); if (!string.IsNullOrEmpty(contentInfo?.GetString(BackgroundContentAttribute.FileUrl))) { //string fileUrl = contentInfo.GetString(BackgroundContentAttribute.FileUrl); if (siteInfo.Additional.IsCountDownload) { CountManager.AddCount(tableName, contentId.ToString(), ECountType.Download); } if (PageUtils.IsProtocolUrl(fileUrl)) { isSuccess = true; PageUtils.Redirect(fileUrl); } else { var filePath = PathUtility.MapPath(siteInfo, fileUrl, true); var fileType = EFileSystemTypeUtils.GetEnumType(PathUtils.GetExtension(filePath)); if (EFileSystemTypeUtils.IsDownload(fileType)) { if (FileUtils.IsFileExists(filePath)) { isSuccess = true; PageUtils.Download(HttpContext.Current.Response, filePath); } } else { isSuccess = true; PageUtils.Redirect(PageUtility.ParseNavigationUrl(siteInfo, fileUrl, false)); } } } } } catch { // ignored } if (!isSuccess) { HttpContext.Current.Response.Write("下载失败,不存在此文件!"); } }