public long GetAssetContentID(string filename, long folderid, int languageid) { if (string.IsNullOrEmpty(userauthHeader.AuthenticationToken)) throw new SoapException("User not logged in", SoapException.ClientFaultCode); assetManager = new AssetManager(); assetManager.ContentLanguage = languageid; this.ImpersonateUser(userauthHeader.AuthenticationToken, assetManager.RequestInformation); EkContent ekcontentinstance = new EkContent(assetManager.RequestInformation); Ektron.ASM.AssetConfig.AssetData assetdata = ekcontentinstance.GetAssetDataBasedOnFileName(filename, folderid); if (assetdata == null) return 0; else return Convert.ToInt64(assetdata.ID); }
private void Page_Load(System.Object sender, System.EventArgs e) { try { bool fileChanged = true; string assetId; List<AssetFileData> assetIdFileNameList = null; List<AssetFileData> tempAssetIdFileNameList = new List<AssetFileData>(); m_refContent = AppUI.EkContentRef; if (Request.Form["type"] != null) { actionType = (string)(Request.Form["type"].Trim().ToLower()); } if (Request.Form["requireMetaTaxonomy"] != null) { isCallerDmsDragDropCtl = true; } m_refContApi = new ContentAPI(); m_refMsg = m_refContApi.EkMsgRef; if (!String.IsNullOrEmpty(Request.Form["content_language"])) { ContentLanguage = Convert.ToInt32(Request.Form["content_language"]); if (ContentLanguage == Ektron.Cms.Common.EkConstants.CONTENT_LANGUAGES_UNDEFINED || ContentLanguage == Ektron.Cms.Common.EkConstants.ALL_CONTENT_LANGUAGES) { ContentLanguage = AppUI.DefaultContentLanguage; } AppUI.ContentLanguage = ContentLanguage; m_refContApi.ContentLanguage = ContentLanguage; } if (actionType.ToLower() == "add" && (Request.QueryString["SelTaxonomyId"] != null) && Request.QueryString["SelTaxonomyId"] != "") { TaxonomySelectId = Convert.ToInt64(Request.QueryString["SelTaxonomyId"]); } userId = Convert.ToInt64(Ektron.Cms.CommonApi.GetEcmCookie()["user_id"]); loginToken = Convert.ToInt32(Ektron.Cms.CommonApi.GetEcmCookie()["unique_id"]); if ((Request.Form["taxonomyselectedtree"] != null) && Request.Form["taxonomyselectedtree"].ToString().Length > 1) { jsTaxonomyIdReloadFrame.Text = Request.Form["taxonomyselectedtree"].ToString(); if (Request.Form["taxonomyselectedtree"].ToString().Split(",".ToCharArray()) != null) { jsTaxonomyId.Text = (Request.Form["taxonomyselectedtree"].ToString().Split(",".ToCharArray()))[0]; } } if (Request.Form["editaction"] == "cancel") { Session.Remove(Convert.ToString(userId) + Convert.ToString(loginToken) + "Attachments"); if ((actionType != "add") && (Request.Form["content_id"] != "" && Convert.ToInt64(Request.Form["content_id"]) > 0)) { string status = m_refContApi.GetContentStatusById(Convert.ToInt64(Request.Form["content_id"])); if (status.ToLower() == "o") //28710 - if asset is a office file status = "A" on saving in word { m_refContent.UndoCheckOutv2_0(Convert.ToInt64(Request.Form["content_id"])); } if (Request.Form["FromEE"] == "true" || Request.QueryString["close"] == "true") { if (Request.QueryString["close"] == "true") { Response.Redirect("close.aspx?reload=true", false); return; } else { Response.Redirect("close.aspx", false); return; } } else { Response.Redirect((string)("content.aspx?id=" + Request.Form["content_id"] + "&action=viewstaged&LangType=" + m_refContApi.ContentLanguage), false); return; } } else { if (Request.Form["FromEE"] == "true" || Request.QueryString["close"] == "true") { if (Request.QueryString["close"] == "true") { Response.Redirect("close.aspx?reload=true", false); return; } else { Response.Redirect("close.aspx", false); return; } } else { Response.Redirect((string)("content.aspx?id=" + Request.Form["content_folder"] + "&action=ViewContentByCategory&LangType=" + m_refContApi.ContentLanguage), false); return; } } } int i; for (i = 0; i <= m_AssetInfoKeys.Length - 1; i++) { asset_info.Add(m_AssetInfoKeys[i], ""); } if (actionType != "multiple,add") { if ((Request.Form["asset_assetid"] != null) && (Request.Form["asset_assetid"].Length > 1)) { assetId = Request.Form["asset_assetid"]; } else { assetId = System.Guid.NewGuid().ToString(); } Response.Expires = -1; Response.AddHeader("Pragma", "no-cache"); Response.AddHeader("cache-control", "no-store"); string ErrDescription = ""; string filename; if (Request.Files["fileupload"] != null) { fileChanged = true; filename = Request.Files["fileupload"].FileName; string[] DMSFileTypes = DocumentManagerData.Instance.FileTypes.Replace("*","").Split(','); bool IsFileTypeAllowed = false; if (DMSFileTypes != null && !string.IsNullOrEmpty(filename)) { if (Array.FindIndex(DMSFileTypes, x => x.ToString().Trim().ToLower() == filename.Substring(filename.IndexOf(".")).ToLower()) >= 0) { IsFileTypeAllowed = true; } } if (actionType == "add") { Ektron.ASM.AssetConfig.AssetData astData = new Ektron.ASM.AssetConfig.AssetData(); astData = m_refContent.GetAssetDataBasedOnFileName(Path.GetFileName(filename), Convert.ToInt64(Request.Form["content_folder"]), -1); if (astData != null && astData.ID != "" && astData.Name != "") { ErrDescription = "A content with title: " + astData.Name + " and ID: " + astData.ID + " already exists with the file name: " + Path.GetFileName(filename) + ". Please use a different filename."; Response.Redirect((string)("reterror.aspx?info=" + ErrDescription), false); return; } } if (filename.Trim() == "") { fileChanged = false; filename = (string)(Request.Form["oldfilename"].ToString()); } else { if (!IsFileTypeAllowed) { EkException.LogException(String.Format("Attempt at uploading unallowed file type occurred from user id: {0}", this.userId)); ErrDescription = "The file has not been uploaded. Please see administrator."; Response.Redirect("reterror.aspx?info=" + ErrDescription, false); return; } try { string docFilePath = DocumentManagerData.Instance.WebSharePath; if (!System.IO.Path.IsPathRooted(docFilePath)) { docFilePath = Ektron.ASM.AssetConfig.Utilities.UrlHelper.GetAppPhysicalPath() + docFilePath; } string destFileName = docFilePath + Path.GetFileName(filename) + assetId; using (BinaryReader br = new BinaryReader(Request.Files["fileupload"].InputStream)) { byte[] buf; using (BinaryWriter binaryWriter = new BinaryWriter(File.Open(destFileName, FileMode.Create))) { buf = br.ReadBytes(bufSize); if (EkFunctions.IsImage(Path.GetExtension(filename))) { System.IO.Stream streamTmp=new System.IO.MemoryStream(buf); if (!EkFunctions.isImageStreamValid(streamTmp)) { streamTmp.Flush(); streamTmp.Close(); throw new Exception("The image is corrupted or not in correct format."); } streamTmp.Flush(); streamTmp.Close(); } int index = 0; while (buf.Length > 0) { binaryWriter.Write(buf, 0, buf.Length); index += buf.Length; buf = br.ReadBytes(bufSize); } binaryWriter.Flush(); binaryWriter.Close(); } br.Close(); } } catch (Exception ex) { throw ex; } } } else { filename = (string)(Request.Form["filename"].ToString()); fileChanged = false; } ProcessPage(filename, assetId, fileChanged, null); } else { bool isOfc2010 = false; if (Request.Cookies[DMSCookieName] != null && !string.IsNullOrEmpty(Request.Cookies[DMSCookieName].Value)) { if (Request.Cookies[DMSCookieName].Value == "2010") { isOfc2010 = true; } } if (isOfc2010) { ProcessUploadOffice2010(); } else { #region originalupload if (Session[Convert.ToString(userId) + Convert.ToString(loginToken) + "Attachments"] != null) { assetIdFileNameList = (List<AssetFileData>)Session[Convert.ToString(userId) + Convert.ToString(loginToken) + "Attachments"]; Session.Remove(Convert.ToString(userId) + Convert.ToString(loginToken) + "Attachments"); } //If coming from photo/image gallery, do not upload any files if a single invalid file is found if ((Request.Form["isImage"] != null) && Request.Form["isImage"].ToString() == "1") { List<string> allFilesList = null; if (Session[Convert.ToString(userId) + Convert.ToString(loginToken) + "AllPostedFiles"] != null) { allFilesList = (List<string>)Session[userId + loginToken + "AllPostedFiles"]; Session.Remove(Convert.ToString(userId) + Convert.ToString(loginToken) + "AllPostedFiles"); } string invalidFilesMsg = ""; if (allFilesList != null) { for (int index = 0; index <= allFilesList.Count - 1; index++) { if (!EkFunctions.IsImage(Path.GetExtension(System.Convert.ToString(allFilesList[index])))) { invalidFilesMsg = System.Convert.ToString(allFilesList[index]); this.jsInvalidFiles.Text = "Only images can be uploaded here, invalid file type found: " + invalidFilesMsg.Replace("\\", "\\\\").Replace("\'", "\\\'") + "\\nNo images have been uploaded."; this.uxAlertInvalidFileType.Visible = true; this.uxCloseThickBox.Visible = true; return; } } } } if (assetIdFileNameList != null && assetIdFileNameList.Count > 0) { for (int index = 0; index <= assetIdFileNameList.Count - 1; index++) { if (assetIdFileNameList[index].FileName.IndexOfAny(new char[] { '&', '%', '+' }) > -1) { this.jsInvalidFiles.Text = "Some files with &,+ or % could not be uploaded"; this.uxAlertInvalidFileType.Visible = true; } else { tempAssetIdFileNameList.Add(assetIdFileNameList[index]); } } assetIdFileNameList = tempAssetIdFileNameList; } fileChanged = true; if ((assetIdFileNameList != null) && assetIdFileNameList.Count > 0) { ProcessPage("", "", true, assetIdFileNameList); } else { //if any files were rejected if (Request.Form["FromEE"] == "true" || Request.QueryString["close"] == "true") { if (Request.QueryString["close"] == "true") { Response.Redirect("close.aspx?reload=true", false); } else { Response.Redirect("close.aspx", false); } } else { if (isCallerDmsDragDropCtl == true) { if ((Session[Convert.ToString(userId) + Convert.ToString(loginToken) + "RejectedFiles"] != null) && Session[Convert.ToString(userId) + Convert.ToString(loginToken) + "RejectedFiles"].ToString() != "") { this.jsInvalidFiles.Text = m_refMsg.GetMessage("lbl error message for multiupload") + " " + Session[Convert.ToString(userId) + Convert.ToString(loginToken) + "RejectedFiles"].ToString().Replace("\\", "\\\\").Replace("\'", "\\\'"); this.jsInvalidFiles.Text += "\\n" + m_refMsg.GetMessage("js:cannot add file with add and plus"); this.uxAlertInvalidFileType.Visible = true; Session.Remove(Convert.ToString(userId) + Convert.ToString(loginToken) + "RejectedFiles"); this.uxCloseThickBox.Visible = true; } else { Response.Redirect(Request.UrlReferrer.PathAndQuery + ((Request.UrlReferrer.PathAndQuery.IndexOf("showtab") > -1) ? "" : "&showtab=multiple"), false); } } else { if ((Session[Convert.ToString(userId) + Convert.ToString(loginToken) + "RejectedFiles"] == null) || Session[Convert.ToString(userId) + Convert.ToString(loginToken) + "RejectedFiles"].ToString() == "") { if ((Session[Convert.ToString(userId) + Convert.ToString(loginToken) + "Attachments"] == null) || Session[Convert.ToString(userId) + Convert.ToString(loginToken) + "Attachments"].ToString() == "") { if (Session[Convert.ToString(userId) + Convert.ToString(loginToken) + "NoFilesToUpload"] == null) { Session.Add(Convert.ToString(userId) + Convert.ToString(loginToken) + "NoFilesToUpload", "NoFilesToUpload"); } else { Session[Convert.ToString(userId) + Convert.ToString(loginToken) + "NoFilesToUpload"] = "NoFilesToUpload"; } } } Response.Redirect((string)("content.aspx?id=" + Request.Form["content_folder"] + "&action=ViewContentByCategory&LangType=" + ContentLanguage), false); } } } #endregion } } } catch (Exception ex) { Utilities.ShowError(ex.Message.ToString()); } }