2016-05-04 6 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 (обратите внимание, что типы контента более доступны, чем они перечисляют на этой странице).