Views: 0
Number of votes: 4
Average rating:

Upload within Xform

Sometimes one would like to enable users to upload files in a Xform. Based on my blog post about extending xforms, I have added an upload function.

I check if an textbox have a css class called FileUpload. If it has it will replace that textbox with an upload function.

clip_image002

So it will look something like this

clip_image002[5]

It handles also more than one file

clip_image002[7]

The stuff that will be saved is like this

clip_image002[9]

image

The code will upload files to a seperate VPP folder

      <add showInFileManager="true" virtualName="XformFiles"
        virtualPath="~/XformFiles/" bypassAccessCheck="true" 
           physicalPath="C:\EPiServer\VPP\XformFiles"
        name="XformFiles" type="EPiServer.Web.Hosting.VirtualPathNativeProvider,EPiServer" />
I havent testet the code with CMS7 thou.
The code is uploaded here 
Jan 08, 2013

Daniel Pålsson
(By Daniel Pålsson, 1/9/2013 9:47:13 AM)

Looks really interesting, but how would you go about to attach the uploaded file to the outgoing mail?

Anders Hattestad
(By Anders Hattestad, 1/9/2013 10:06:01 AM)

That will be easy. Just attach to the BeforeSubmitPostedData event
Check if ((e.FormData.ChannelOptions & ChannelOptions.Email) != ChannelOptions.Email) is true
then send the custom mail and remove the send mail option
e.FormData.ChannelOptions &= ~ChannelOptions.Email;

GOSSO
(By GOSSO, 1/9/2013 1:00:58 PM)

You´ve made it easy for us, and it works! thats fantastic.

Except when you have validation on the field, then it always display empty.

I have tried to add the "oldFiles" to the field but it doesn't work. Any idea?

if (item.Attributes["value"] == null)
{
var value = item.OwnerDocument.CreateAttribute("value");
item.Attributes.Append(value);
}
item.Attributes["value"].Value = oldFiles;

Im hooked up with BeforeSubmitPostedData and that seems to be working.

Ive also noticed that the form editor is not working 100% in FF. Works in IE. Epi6 SP2.

Jonathan Roberts
(By Jonathan Roberts, 1/18/2013 11:35:21 AM)

Is there any way you can encrypt the form data before it is submitted into the database?

Graham Fieldhouse
(By Graham Fieldhouse, 7/16/2013 6:33:45 PM)

This is really useful, and it works in CMS7.1 without any changes.

Jinesh V
(By Jinesh V, 2/26/2014 11:16:33 AM)

Does this work for EPiServer 7.5?

Jonas Unosson
(By Jonas Unosson, 9/4/2014 3:46:35 PM)

Do you have some example code on how to attach the uploaded files to the BeforeSubmitPostedData event in Global.asax.cs?

I haven't succeeded to get it to work. The files are uploaded to the VPP folder, but I am not sure how to get it attached to the email.

Does anyone have some example code for this?

Marcus Wallén
(By Marcus Wallén, 4/28/2015 5:55:04 PM)

EPiServer 7.1

I had to add: useRouting="true" here to get it to Virtual map the file correctly.

"true" virtualName="XformFiles"
        virtualPath="~/XformFiles/" bypassAccessCheck="true" 
           physicalPath="C:\EPiServer\VPP\XformFiles"
        name="XformFiles" type="EPiServer.Web.Hosting.VirtualPathNativeProvider,EPiServer"  useRouting="true"/>

Please login to comment.