Всем привет.
возник вопрос загрузки файлов с ВФ страницы в аттачменты.
опираясь на одну из статей в блоге
http://salesforce-developer.ru/zagruzhaem-i-prisoedinyaem-k-obektam-faylyi-attachments/
я организовал это дело.
Но как проконтролировать такой ввод на размер (т.е. ограничить его), на тип документа?
вот разметка:
<apex:inputFile value="{!attachment.body}" filename="{!attachment.name}" accept="image/*,application/pdf"/>
и несмотря на наличие атрибута accept система позволяет подгружать не только обозначенные типы, а новые лимиты позволяют грузить файлы гигантских размеров.
Как я понимаю, все это нужно контроллировать только в контроллере: смотреть attach.BodyLength and attach.ContentType.
Может у вас уже был опыт с этим и есть какие-то хитрости в этом процессе?
Всем привет. возник вопрос загрузки файлов с ВФ страницы в аттачменты. опираясь на одну из статей в блоге [url]http://salesforce-developer.ru/zagruzhaem-i-prisoedinyaem-k-obektam-faylyi-attachments/[/url] я организовал это дело. Но как проконтролировать такой ввод на размер (т.е. ограничить его), на тип документа? вот разметка: [code]<apex:inputFile value="{!attachment.body}" filename="{!attachment.name}" accept="image/*,application/pdf"/>[/code] и несмотря на наличие атрибута accept система позволяет подгружать не только обозначенные типы, а новые лимиты позволяют грузить файлы гигантских размеров. Как я понимаю, все это нужно контроллировать только в контроллере: смотреть attach.BodyLength and attach.ContentType. Может у вас уже был опыт с этим и есть какие-то хитрости в этом процессе?
Привет, Dan!
На сколько я помню, что:
1) существует ограничение на загрузку файла в 10 мб на VF страничке. Т.е больше 10 мб тебе вроде бы не даст загрузить, а упадет по лимитам.
2) Чтобы контролировать типы файлов можно использовать вот так:
if (uploadFileName.toLowerCase().endsWith('csv') || uploadFileName.toLowerCase().endsWith('txt')) {...}
Но опять же, это происходит уже после загрузки файла. Чтобы контролировать можно использовать JS (Я использовал JQuery).
<apex:image width="350px" id="preview" rendered="{!!isPicEmpty}" value="/servlet/servlet.FileDownload?file={!imageId}" /><apex:inputFile id="myFile" value="{!fileBody}" filename="{!filename}" style="btn" accept="image/jpeg,image/png,image/gif"/>
<apex:commandButton id="uploadButt" value="{!uploadButtonName}" action="{!uploadFile}" />
И сам код скрипта (не смог выложить код..т.к он плохо форматируется..сделал это в виде картинки из IDE):
http://gyazo.com/762d3323052e93cd9562b6b7920fd927
Дальше в контроллере можешь создавать Attachment и ложить туда свой файл.
Привет, Dan! На сколько я помню, что: 1) существует ограничение на загрузку файла в 10 мб на VF страничке. Т.е больше 10 мб тебе вроде бы не даст загрузить, а упадет по лимитам. 2) Чтобы контролировать типы файлов можно использовать вот так: [code] if (uploadFileName.toLowerCase().endsWith('csv') || uploadFileName.toLowerCase().endsWith('txt')) {...} [/code] Но опять же, это происходит уже после загрузки файла. Чтобы контролировать можно использовать JS (Я использовал JQuery). [code] <apex:image width="350px" id="preview" rendered="{!!isPicEmpty}" value="/servlet/servlet.FileDownload?file={!imageId}" /> <apex:inputFile id="myFile" value="{!fileBody}" filename="{!filename}" style="btn" accept="image/jpeg,image/png,image/gif"/> <apex:commandButton id="uploadButt" value="{!uploadButtonName}" action="{!uploadFile}" />[/code] И сам код скрипта (не смог выложить код..т.к он плохо форматируется..сделал это в виде картинки из IDE): [url]http://gyazo.com/762d3323052e93cd9562b6b7920fd927[/url] Дальше в контроллере можешь создавать Attachment и ложить туда свой файл.
Спасибо, буду пробовать.
Спасибо, буду пробовать.