Salesforce - возможно ли отобразить файл изображения из ContentVersion на пользовательской странице visualforce? - PullRequest
3 голосов
/ 28 марта 2011

Я написал одну простую страницу Visualforce, которая позволяет пользователю загружать файл изображения, а затем сохранять файл в ContentVersion объекте.

Теперь Я хочу отобразить сохраненное изображение на своей пользовательской странице visualforce. это вообще возможно?Похоже, <apex:image> не может быть использован.Также <img href="{!cv.contentVersion}"...> не повезло.

Реальная проблема в том, что я успешно загрузил файл изображения, но какой у него URL?Я проверил случайный URL-адрес снаружи в Google, и я могу отобразить изображение (например, /../..some.jpg "). Но я не могу понять, какой абсолютный URL-адрес для файла изображения, который был загружен в Contentversion.

ПРИМЕЧАНИЕ. Это не статический ресурс, поскольку мои пользователи могут загружать изображения для частой смены их изображений.

Код

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

Страница 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>

Ответы [ 5 ]

3 голосов
/ 29 марта 2011

Я не думаю, что в настоящее время возможно предоставить его из контента. Формат, предоставляемый ScottW, работает для документов.

Другой вариант, который я сделал, это загрузить zip-файл, содержащий мои изображения, в Static Resources, на который затем можно ссылаться.

2 голосов
/ 05 июля 2011

Это должно работать:

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;
}
1 голос
/ 15 января 2012
  • Изображение отображается с использованием «/servlet/servlet.FileDownload?file=» в теге с использованием атрибута URL.

Пример: <apex:image URL="/servlet/servlet.FileDownload?file={!recordId}"/>

для получения дополнительной информации, посещение Отображение изображений на странице Visual Force

1 голос
/ 16 июля 2011

Исходя из моего опыта, "thegogz" является правильным - в настоящее время невозможно отображать изображения непосредственно из Контента. Как указали другие, рендеринг из Documents и / или Static Resources работает, и IMHO с использованием Documents предпочтительнее, потому что вы можете программно обращаться к URL, двоичным данным и т. Д. В Apex.

1 голос
/ 29 марта 2011

Попробуйте <apex:image URL="/servlet/servlet.FileDownload?file={!recordId}"/>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...