image upload salesforce visualforce apex-code

Salesforce: ¿es posible mostrar el archivo de imagen de ContentVersion a la página personalizada de Visualforce?



upload apex-code (5)

Escribí una página simple de Visualforce que permite al usuario subir un archivo de imagen y luego guardar el archivo en el objeto ContentVersion .

Ahora quiero mostrar la imagen guardada en mi página personalizada de Visualforce. ¿Es posible? Parece que <apex:image> no se puede usar. Además, <img href="{!cv.contentVersion}"...> no tuvo suerte.

El verdadero problema es que subí el archivo de imagen con éxito, pero ¿cuál es la URL? Probé con URL al azar fuera de google y puedo mostrar la imagen (como /../..some.jpg "). Pero no puedo entender cuál es la URL absoluta para el archivo de imagen que se ha subido a contentversion .

NOTA: Este no es un recurso estático ya que mis usuarios pueden cargar imágenes para cambiar su imagen de usuario a menudo.

Código

public with sharing class ImageUploadTestController { public blob file { get; set; } public String imageFilePath { get; set; } public ContentVersion cv { get; set; } public ImageUploadTestController() { cv = [select id, versionData, title, pathOnClient FROM ContentVersion limit 1]; } //fill out the inputFile field and press go. This will upload file to the server public PageReference go() { ContentVersion v = new ContentVersion(); v.versionData = file; v.title = ''some title''; v.pathOnClient =''/foo.jpeg''; insert v; return new PageReference(''/'' + v.id); } //v.id sample //069A00000009Ux3 }//end class

Página de Visualforce

<apex:page controller="ImageUploadTestController"> <apex:form > <apex:inputFile value="{!file}" /> <apex:commandbutton action="{!go}" value="go"/> </apex:form> <!-- none of below works!! :( --> <a href="/{!cv.id}">{!cv.title} {!cv.pathOnClient}</a> <a href="https://na7.salesforce.com/069A00000009FG4"></a> <apex:image value="/069A00000009Ux3" width="220" height="55"/> </apex:page>


Pruebe <apex:image URL="/servlet/servlet.FileDownload?file={!recordId}"/>


No creo que sea posible publicarlo desde el contenido actualmente. El formato proporcionado por ScottW funciona para Documentos.

La otra opción que he hecho es subir un archivo zip que contiene mis imágenes a los recursos estáticos, que luego pueden ser referenciados.


Esto debería funcionar:

public PageReference getContent(){ String html = ApexPages.currentPage().getParameters().get(''html''); PageReference redirection = null; redirection = new PageReference(''/sfc/servlet.shepherd/version/download/'' + contentVersion.Id); redirection.setRedirect(true); return redirection; }


Según mi experiencia, "Thegogz" es correcto: actualmente no es posible representar imágenes directamente desde el Contenido. Como otros han indicado, renderizar desde Documentos y / o Recursos estáticos funciona, y en mi humilde opinión, utilizar Documentos es preferible porque se puede acceder a la URL, datos binarios, etc. programáticamente en Apex.


  • La imagen se muestra usando "/servlet/servlet.FileDownload?file=" en la etiqueta mediante el uso del atributo URL.

Ejemplo: <apex:image URL="/servlet/servlet.FileDownload?file={!recordId}"/>

para obtener más información, visite Visualización de imágenes en una página de Visual Force