4

ユーザーが画像ファイルをアップロードしてからContentVersionオブジェクトに保存できる簡単なVisualforceページを1つ作成しました。

保存した画像をカスタムvisualforceページに表示したいと思います。それも可能ですか?<apex:image>使用できないようです。また<img href="{!cv.contentVersion}"...>、運がなかった。

本当の問題は、画像ファイルを正常にアップロードしたことですが、そのURLは何ですか?Googleの外部でランダムなURLを使用してテストし、画像を表示できます(/../..some.jpg "など)。ただし、contentversionにアップロードされた画像ファイルの絶対URLがわかりません。 。

注:ユーザーが画像をアップロードしてユーザー画像を頻繁に変更する可能性があるため、これは静的リソースではありません。

コード

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>
4

5 に答える 5

4

現在、コンテンツから提供することは不可能だと思います。ScottWが提供する形式はドキュメントで機能します。

私が行ったもう1つのオプションは、画像を含むzipファイルを静的リソースにアップロードして参照できるようにすることです。

于 2011-03-29T12:22:50.487 に答える
2

これは機能するはずです:

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;
}
于 2011-07-04T20:02:16.923 に答える
1

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

于 2011-03-28T21:06:06.863 に答える
1

私の経験によると、「thegogz」は正しいです。現在、コンテンツから直接画像をレンダリングすることはできません。他の人が示しているように、ドキュメントや静的リソースからのレンダリングは機能します。ApexでプログラムでURLやバイナリデータなどにアクセスできるため、ドキュメントを使用したIMHOが推奨されます。

于 2011-07-16T11:02:34.497 に答える
1
  • 画像は、URL属性を使用してタグに「/servlet/servlet.FileDownload?file="」を使用して表示されます。

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

詳細については、「VisualForceページでの画像の表示」を参照してください。

于 2012-01-15T13:01:40.000 に答える