dotnetco.de

Uploading a file with asp.net, jQuery and jTemplate

Playing around with jQuery and jTemplate and I had the following problem: On a page created with jTemplate I could not use asp:FileUpload Control. Additionally it would of course be better to have an Ajax / jQuery control as this would better integrate into a jQuery website. There are several jQuery Fileupload controls, and Ajax-Upload is my favorite, e.g. because it allows multiple fileupload and does not require Flash. Andrew Valums, the creator of the Ajax-Upload, has posted a C#-Example but as it’s just posted in the comments it might be missed easily. Additionally I needed it for Visual Basic so I’ve transfered it and wrote this short blog entry.

First follow the instructions at Ajax-Upload page to setup your page. I use the following JavaScript-Code within my function

var uploader = new qq.FileUploader({
 element: document.getElementById('file-uploader'),
 action: 'MyWebservice.asmx/ProcessFile',
 debug: false,
 sizeLimit: 1100000, // max size 1 MB 
 allowedExtensions: ['txt']
});

In the webservice I then use the following code. The code is shortened to the basics, of course you should add a check whether the filename already exists etc. but it should only demonstrate how to save the uploaded file.

Dim Filename As String = "c:\temp\upload.txt"
'get reference to posted file and do what you want with this file 
If Me.Context.Request.Files.Count = 0 Then
 'Firefox does not upload it as file 
 Dim Length As Integer = 4096 
 Dim BytesRead As Integer = 0 
 Dim buffer As [Byte]() = New [Byte](Length) {} 
 Try
 Using fileStream As New IO.FileStream(ImportPath & Filename, IO.FileMode.Create)
 Do
 BytesRead = Context.Request.InputStream.Read(buffer, 0, Length)
 fileStream.Write(buffer, 0, BytesRead)
 Loop While BytesRead > 0
 End Using
 Catch ex As UnauthorizedAccessException
 ' log error hinting to set the write permission of ASPNET or the identity accessing the code
 End Try
Else
 Dim postedfile As HttpPostedFile
 postedfile = TryCast(Me.Context.Request.Files.[Get](0), HttpPostedFile)
 postedfile.SaveAs(Filename)
End If

 

Leave a Comment