none
Proteger y/o publicar imagenes desde c# RRS feed

  • Pregunta

  • Buenos días, he creado un webpart en el que el usuario selecciona una imagen de su ordenador y la sube a la biblioteca de documentos del subsitio donde se encuentre, el problema es que cuando la sube un administrador o usuario con permisos 'control total' la imagen puede verla aunque no este protegida, pero si la sube un usuario normal, unavez vaya a ver la imagen (ya subida) no la ve, ya que por defecto no esta protegida, por lo tanto me gustaría saber como puedo publicar y/o proteger una imagen desde el código c# del webpart. El código actual de esa parte del webpart es:

    SPWeb webInUserContext = SPContext.Current.Web;
              SPSite SiteInUserContext = SPContext.Current.Site;
              Guid webGuid = webInUserContext.ID;
              Guid siteGuid = SiteInUserContext.ID;
    
              SPSecurity.RunWithElevatedPrivileges(delegate()
              {
                using (var mySite = new SPSite(siteGuid))
                {
                  using (var myWeb = string.IsNullOrEmpty(SubSite) ? mySite.OpenWeb(webGuid) : mySite.OpenWeb(SubSite))
                  {
                    //Get document library          
                    SPDocumentLibrary spdl = myWeb.Lists[LIST_IMAGES] as SPDocumentLibrary;
    
                    //Setting allows more of the unsafe
                    myWeb.AllowUnsafeUpdates = true;
                    mySite.AllowUnsafeUpdates = false;
    
                    string fileExtension = FileUpload1.FileName.Substring(FileUpload1.FileName.IndexOf("."));
                    string fileName = (FileUpload1.FileName.Split('.').Length > 0) ? FileUpload1.FileName.Split('.')[0] : FileUpload1.FileName;
                    byte[] fileBytes = FileUpload1.FileBytes;
                    string destUrl = spdl.RootFolder.Url + "/" + fileName + fileExtension;
                    SPFile destFile = spdl.RootFolder.Files.Add(destUrl, fileBytes, true);
                    
                    
    
                    destFile.Update();
                    
                    myWeb.AllowUnsafeUpdates = false;
                    mySite.AllowUnsafeUpdates = false;
                    
                    destFile.Approve("");
    
    
                    lblMostrarImagen.Visible = true;
                    lblValorImagen.Text = "../" + destUrl;
                    lblMostrarImagen.Text = "<img src=\"" + lblValorImagen.Text + "\" height=\"170px\" width=\"250px\" />";
    
                  }
                }
              });
    

    La parte donde intento aprobar o publicar es:

    destFile.Approve("");
    

    He probado poniendo .Publish también, y poniendo ambos en varias partes diferentes dle código sin obtener el resultado deseado.

    Estaré muy agradecido a quien pueda ayudarme, gracias de antemano

    lunes, 4 de abril de 2011 8:38

Respuestas

Todas las respuestas