What is the best method for uploading files of variable size (either very large or very small to an ASP.NET MVC 2 application file system)?
This is what I understa
I use this javascript tool
This is the controller (I double check cause IE has a strange behavior) :
_
Function UploadExcelPriceList(ByVal id As String) As System.String
Dim bResult As Boolean = False
Dim IsIE As Boolean = False
Dim sFileName As String = ""
If (Request.Files Is Nothing) OrElse (Request.Files.Count = 0) Then
If String.IsNullOrEmpty(Request.Params("qqfile")) Then
Return ("{success:false, error:'request file is empty'}")
Else
sFileName = Request.Params("qqfile").ToString
End If
Else
sFileName = Request.Files(0).FileName
IsIE = True
End If
If String.IsNullOrEmpty(sFileName) Then
Return ("{success:false, error:'request file is empty'}")
End If
Dim DocumentName As String = Id & Path.GetExtension(sFileName)
If IsIE Then
Try
Request.Files(0).SaveAs(Path.Combine(My.Settings.TempFolder, DocumentName))
Catch ex As Exception
Return ("{success:false, error:'" & ex.Message & "'}")
End Try
Else
Try
If (Request.InputStream IsNot Nothing) AndAlso (Request.InputStream.CanRead) AndAlso (Request.InputStream.Length > 0) Then
Using fileStream As FileStream = New FileStream(Path.Combine(My.Settings.TempFolder, DocumentName), FileMode.Create)
Dim FileBytes(Core.Convert.ToInt32(Request.InputStream.Length)) As Byte
Dim bytesRead As Int32 = 0
bytesRead = Request.InputStream.Read(FileBytes, 0, FileBytes.Length)
fileStream.Write(FileBytes, 0, bytesRead)
fileStream.Flush()
fileStream.Close()
bytesRead = Nothing
End Using
End If
Catch ex As Exception
Return ("{success:false, error:'" & ex.Message & "'}")
End Try
End If
Return ("{success:true, id: '" & Id & "'}")
End Function
I put this HTML in my View:
and this is the javascript:
function CreateFileUploader() {
var uploader = new qq.FileUploader({
element: $('#uploaderFile')[0],
template: '' +
'Drop files here to upload' +
' ' +
'
' +
'',
hoverClass: 'ui-state-hover',
focusClass: 'ui-state-focus',
action: UploaderAction,
allowedExtensions: ['xls', 'xlsx'],
params: { id: ModelId },
onSubmit: function(file, ext) {
},
onComplete: function(id, fileName, responseJSON) {
if ((responseJSON.success == null) || (responseJSON.success == 'false')) {
$.jGrowl("Error!", { theme: 'MessageError', life: 3000 });
}
else {
documentUploaded = true;
$.jGrowl("Document uploaded successfully!", { theme: 'MessageOk', life: 1800 });
window.setTimeout(function() {
$("#PopupExcelUploader").dialog('close');
$("#PriceListDynamicGrid").trigger("reloadGrid");
}, 3000);
}
}
});
}