2016-05-04 12 views
1

Visualforceページにテキストファイル(.txt形式)をダウンロードするためのダウンロードボタンがあります。このテキストファイルは、カスタムオブジェクトのテキストフィールドに格納されたデータを使用して動的に作成されます。今、添付ファイルやドキュメントオブジェクトを作成せずにこの簡単なダウンロード機能を実現するために苦労しています。プレーンテキストファイルとしてコンテンツをダウンロードする方法はありますか?これを手伝ってくれる人もいますか?Visualforceページでテキストファイルをダウンロード

以下のVisualforceコードを試しましたが、ファイルをダウンロードしていません。

<a href="data:text/plain;charset=utf-8;base64,{!getEncodedData}"> Download License </a></apex:outputLabel> 

ここで、getEncodedDataはテキストファイルの本文になります。

Apexコード:

getEncodedData = EncodingUtil.base64Encode(Blob.valueOf(strContent)); 

P.N:作成されたファイルは、後で再利用されることはありませんという理由だけで、私は、添付ファイルを作成せずにこれを達成しようとしています。

本当にありがとうございます。

答えて

0

のJavaScript Textdownloadは特に

:-)この場合には、hrefの使用量よりも、それは簡単にそして、ここで正確な流れです。

のVisualforceコード:

<apex:outputLabel onClick="javascript:fnDownloadContent('{!ID}','{!compId}');" >Download</apex:outputLabel> 
<apex:actionfunction name="actDnldContent" action="{!fileContent}" reRender="" oncomplete="javascript:download('{!filename}','{!getData}');"> 
<apex:param name="Id" value="" assignTo="{!Id}" /> 
<apex:param name="compId" value="" assignTo="{!CompId}"/>                  
</apex:actionfunction> 

JavaSript機能:上記のコードで

function fnDownloadContent(ID, compID) 
{ 
    actDnldContent(ID, compID);   
} 
function download(filename,text) 
{ 
    var element = document.createElement('a'); 
    element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text)); 
    element.setAttribute('download', filename); 
    element.style.display = 'none'; 
    document.body.appendChild(element); 
    element.click(); 
    document.body.removeChild(element); 
} 

、 'ファイル名' と 'のgetData' 変数はApexメソッドの呼び出しで設定されます '含むFileContent' にApexコントローラ。

0

ボタンを押して新しいタブを開き(正しくリコールすると、target = "_ blank")、新しいページを読み込みます。

<apex:page standardController="Account" contentType="application/vnd.ms-excel"> 

https://developer.salesforce.com/docs/atlas.en-us.pages.meta/pages/pages_styling_content_type.htm(彼らはそのページに一覧表示するものよりも利用できるより多くのコンテンツタイプがあることに注意してください):あなたが差し込みフィールドとすべてのものと一緒に、通常のページを置くことができ、あなただけのコンテンツタイプを変更する必要があります。

関連する問題