Регистрация  |  Вход

Правильно организовать загрузку файлов в Attachments

Всем привет.

возник вопрос загрузки файлов с ВФ страницы в аттачменты.

опираясь на одну из статей в блоге
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 и ложить туда свой файл.

Спасибо, буду пробовать.

Спасибо, буду пробовать.