MB FileBrowser for ASP.NET 3.5 offer an open source solution to provide server side
file browsing to popular html on-line editors (like CKEditor and Tiny MCE) or to
your own forms.
The project use a modified
version of IZ File Manager a server side asp.net web control developed by
manishma. Refer to
IZWebFileManager repository for full source code of the control.
The intent of MB File Browser is to offer an easy-to-use ready solution.
Installation
The easiest way to install MB FileBrowser is to use Nuget.
From within Visual Studio open the Package Manager Console run the following command:
PM> Install-Package MB.FileBrowser
This will install last version of the package in your project.
Next step is to create the root folder for you browser. For default root folder
path
is /userfiles. You may change it setting MainDirectoriy attribute
of FileManager1 in FileBrowser.aspx.
!!! IMPORTANT !!! Internet anomynous user (IUSR_**) MUST have full
control over this folder.
Use
Now MB File Browser is ready to use. Simply open /FileBrowser/FileBrowser.aspx (optionally
adding parameters in the query string).
You can find three examples of how to use File Browser:
The first is a stand alone FileBrowser which
allow to pick
a file from the serve in your web application, or to navigate
and download file in a public or private directory: the best way is to place FileBrowser.aspx
into a new browser window (with javascript method window.open) or, using an
iframe, into a javascript dialog (like Bootstrap modal, Fancybox or
other). Both example are provided.
The second show how to use MB FileBrowser with CKEditor
and the third
how to use MB FileBrowser with Tiny MCE 4.
Configure
You have two ways to costomize the MB FileBrowser behavior:
- Passing proper parameters via querystring when opening FileBrowser.aspx
- Changing values of the attributes of Filemanager1 control in FileBrowser.aspx.
Recognised parameters
-
caller:
- ckeditor: the caller is ckeditor,
- tinymce4: the caller is Tiny MCE,
- opener: used when open in a new window (the opener is window.opener),
- top or parent: used when open in iframe (the opener
is window.parent or window.top)
-
fn: (used only in stand alone mode) name of the function to callBack
when user select a file. The callback function will carry a single argument: the
url of chosen file.
-
langCode: this parameter (passed automatically by CKEditor) allow
you to customize language of MB FileBrowser.
Example:
<script>>
//CallBack function
function newWinFn(fileurl) {
$('#newWinField').val(fileurl);
}
$(function () {
// Button click event
$('#newWinBtn').on('click', function (e) {
e.preventDefault();
var top = window.screenTop + 50;
var left = window.screenLeft + 50;
window.open('/FileBrowser/FileBrowser.aspx?caller=opener&fn=newWinFn&langCode=en', 'fileBrowser', 'top=' + top + ',left=' + left + ',menubar=0,scrollbars=0,toolbar=0,height=550,width=700');
})
});
</script>
Filemanager1 attributes
In addition to standard properties my version of IZWebFileManager contains some
new
ones specially developed for MB FileBrowser. You can assign values to IZWebFileManager
properties modifing values of attributes of Filemanager1 control in FileBrowser.aspx.
Most of the attributes have self explained names. Here are the most rilevant:
-
MainDirectory: (new in my version). It's the path of root directory
for MB FileBrowser navigation. Internet Anonimous User MUST have full control (read,
write, delete/overwrite) over this folder. At the first run, MB FileBrowser create
automatically four subdir (files, images, flash and media)
where you may organize user files. Folders are created to accomplish the rules that
both CkEditor that Tiny MCE follow in file organization.
-
CustomThumbnailHandler: (new in my version). Url of the ThumbnailHandler.
MB FileBrowser provides a default thumbnail handler (/FileBrowser/IZWebFileManagerThumbnailHandler.ashx),
but you may write your own. Filemanager call the Thumbnail Handler passing url-ecoded
image file url as querystring (ex: MyThumbnailHandler.ashx?%2DirName%2imagename.jpg).
-
DefaultAccessMode: (new in my version). It is highly recommended
to grant access to the server folders only to registered users. Probably you will
define access mode during the process of authenticating users (see below). This
property determines what kind of access is granted to guest users (or when session
expires). Default value is ReadOnly.
-
ImagesFolder: It is the folder where Filemanager search image for
standard tollbar buttons, pop-up menu items, generic file and folders icons. Yuo
may customize icons creating images with same names.
-
FileTypes: This structure allow to define custom small and large
icons for file types. For undefined file types the generic file icon will be used.
Example:
<iz:FileManager ID="FileManager1" runat="server" Height="480" Width="570" ImagesFolder="~/FileBrowser/img/cmd"
MainDirectory="~/userfiles" CustomThumbnailHandler="~/FileBrowser/IZWebFileManagerThumbnailHandler.ashx"
ShowHiddenFilesAndFolders="false" FileViewMode="Thumbnails" ClientOpenItemFunction="fileSelected" DefaultAccessMode="ReadOnly" >
<CustomToolbarButtons>
<iz:CustomToolbarButton ImageUrl="img/cmd/Show.png" Text="Mostra file" PerformPostBack="false"
OnClientClick="showFile()" />
</CustomToolbarButtons>
<FileTypes>
<iz:FileType Extensions=".jpg, .jpeg,.pmg, .gif" SmallImageUrl="img/16/file-picture.png"
LargeImageUrl="img/32/file-picture.png">
</iz:FileType>
<iz:FileType Extensions=".xls,.xlsx,.ods" SmallImageUrl="img/16/file-excel-alt.png"
LargeImageUrl="img/32/file-excel-alt.png">
</iz:FileType>
<iz:FileType Extensions=".pdf" SmallImageUrl="img/16/file-pdf-alt.png" LargeImageUrl="img/32/file-pdf-alt.png">
</iz:FileType>
<iz:FileType Extensions=".psd" SmallImageUrl="img/16/file-photoshop.png" LargeImageUrl="img/32/file-photoshop.png">
</iz:FileType>
<iz:FileType Extensions=".ppt,.pptx,.pptm, .odp" SmallImageUrl="img/16/file-powerpoint-alt.png"
LargeImageUrl="img/32/file-powerpoint-alt.png">
</iz:FileType>
<iz:FileType Extensions=".aiff,.mp3,.ogg,.oga,.wav,.wma" SmallImageUrl="img/16/file-sound.png"
LargeImageUrl="img/32/file-sound.png">
</iz:FileType>
<iz:FileType Extensions=".txt" SmallImageUrl="img/16/file-text.png" LargeImageUrl="img/32/file-text.png">
</iz:FileType>
<iz:FileType Extensions=".flv,.f4v,.avi,.mov,.qt,.wmv,.mp4,.mpg,.mpeg,.mp2" SmallImageUrl="img/16/file-video.png"
LargeImageUrl="img/32/file-video.png">
</iz:FileType>
<iz:FileType Extensions=".doc,.docx,.odt" SmallImageUrl="img/16/file-word-alt.png"
LargeImageUrl="img/32/file-word.png">
</iz:FileType>
<iz:FileType Extensions=".tar.gz, .7z, .ace, .cab, .rar, .zip, .zipx" SmallImageUrl="img/16/file-zip-alt.png"
LargeImageUrl="img/32/file-zip-alt.png">
</iz:FileType>
</FileTypes>
</iz:FileManager>
Note: you may not use ShowAddressBar, AllowUpload,
ClientOpenItemFunction, AllowOverwrite, AllowDelete,
ReadOnly. This properties are handled internally by MB FileBrowser.
Upload
MB FileBrowser doesn't use IZWebFileManager upload engine, but its own based on
popular
FineUploader jQuery plugin with drag'n drop functionality (if browser support it).
Simply drag one or more files on fileview area and file(s) will be uploades into
current directory.
To deny upload you mast set FileBrowserAccesMode session property (see below) to
ReadOnly or to DenyAll.
For default only jpg,jpeg,doc,docx,zip,gif,png,pdf,rar,svg,svgz,xls,xlsx,ppt,pps,pptx
files are accepted. This setting is suitable for most application, anyway you can
costomize allowed file types list setting the AllowedFileTypes
session property.
Granting access
It is highly recommended to grant access to the server folders only to registered
users. Probably you will:
- Define default access for guest users (or when session expires).
- Define granted access during the process of authenticating users.
Default Acces mode is defined by the IZWebFileManager property DefaultAccessMode.
When user log in you can grant him proper access setting FileBrowserAccessMode
session property.
MB FileBrowser offer a typed interface to application session. Through class MagicSession
defined in MB.FileBrowser you che handle session properties related to MB_FileBrowser.
MB.FileBrowser.MagicSession.Current.FileBrowserAccessMode define
granted access to MB FileBrowser. Valid value are:
-
DenyAll: no access is allowed. Try to open FileBrowser cause e
"Insufficient user prerogative" warning.
-
ReadOnly: user can only browse and download files.
-
Write: user can copy and upload but not overwrite, move or delete
files.
-
Delete: user has full control over files.
MB.FileBrowser.MagicSession.Current.AllowedFileTypes define file
tipes accepted by upload process. Valid value is a string formatted as a comma separated
list of extension without leading dot.