Create Custom RadUpload Control
If you need to create your own Upload control, you can rely on the RadUpload control to prepare your files for upload behind the scenes.
For example, if your application contains a custom control that creates a list of files for upload, you can create a RadUpload in code-behind to manage the files and upload them on the server.
In order to do so, you will need to manually add the list of the files into the CurrentSession.SelectedFiles collection:
Example 1: Selecting files
//create a RadUpload to handle the upload
RadUpload upload = new RadUpload;
// get a collection of files from the local system
List<FileInfo> files = new List<FileInfo>();
// add files
// . . .
// insert files in the RadUpload
if (files.Count > 0)
{
foreach (FileInfo file in files)
{
RadUploadSelectedFile f = new RadUploadSelectedFile(file);
upload.CurrentSession.SelectedFiles.Add(f);
}
//prepare for upload
...
}
Dim upload As New RadUpload()
' get some files from the local system
Dim files As New List(Of FileInfo)()
' add some files
' . . .
' insert files in the RadUpload
If files.Count > 0 Then
For Each file As FileInfo In files
Dim f As New RadUploadSelectedFile(file)
upload.CurrentSession.SelectedFiles.Add(f)
Next
' prepare for upload
End If
The RadUploadSelectedFile class has a constructor that allows you to create a new instance from a Stream object: RadUploadSelectedFile f = new RadUploadSelectedFile(fileStream,fileName). However, in order to create a valid object of tyle RadUploadSelectedFile, you need to make sure that the fileStream Position is set to the beginning of the stream: fileStream.Position=0L. Only then you can use the Stream object to create a RadUploadSelectedFile instance.
Then you have to prepare the RadUpload control for the upload process. The PrepareSelectedFilesForUpload method facilitates the implementation of such scenarios by setting the RadUpload in a state ready to upload the manually added CurrentSession.SelectedFiles collection:
Example 2: Preparing for upload
// prepare for upload
this.upload.PrepareSelectedFilesForUpload();
upload.PrepareSelectedFilesForUpload()
Finally, you need to start the upload:
Example 3: Starting the upload
this.upload.StartUpload();
upload.StartUpload()