Источник: http://flajaxianfileupload.codeplex.com/
Help: http://www.flajaxian.com/flajaxian.com/FileUploader2.0Help.html
Видео (англ.): http://blog.bodurov.com/how-to-use-flajaxian-fileuploader-video-basics
В моем примере представлен собственно сам компонент загрузки файлов на сервер, в данном случае графических файлов. Контроль Image, показывающий уже загруженое изображение, и скрытая кнопка. Все это находится внутри Update Panel. После того как файл загружен эмулируется нажатие на скрытую кнопку и происходит обновление контрола Image и мы тут же видим только что загруженное изображение.
Код расположенный на моей aspx странице:
- <fieldset>
- <legend class="legend" onclick="slideBlock('blockBOLogo');">Reseller logo for Back End (please ensure your logo size is 415x70 pixels only)legend>
- <div id="blockBOLogo" class="blockLogo">
- <asp:ScriptManager ID="ScriptManager1" runat="server">
- asp:ScriptManager>
- <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
- <ContentTemplate>
- <asp:Image ID="imgBOLogo" runat="server" CssClass="imageResellerLogoBO"/>
- <asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" style="display:none;"/>
- <br/><br/>
- <fjx:FileUploader ID="FileUploader1" runat="server"
- UseInsideUpdatePanel="true"
- RequestAsPostBack="true"
- OnFileReceived="FileUploader1_FileReceived"
- PageUrl="~/ResellerEdit.aspx?proj=HOTEL&id_reseller=2"
- SuppressQueryStringParametersOnUploadUrl="false"
-
- JsFunc_FileStateChanged="fn_fileStateChanged"
-
- CssUrl="~/Control/Style/FileUploader.css"
- TransparentBackground="true"
- ImagesPath="~/Control/Image/Uploader/"
- BrowseButtonUrl="Browse.gif"
- BrowseButtonOverUrl="BrowseOver.gif"
- BrowseButtonPressedUrl="BrowseOver.gif"
- BrowseButtonDisabledUrl="Browse.gif"
- UploadButtonUrl="Upload.gif"
- UploadButtonOverUrl="UploadOver.gif"
- UploadButtonPressedUrl="UploadOver.gif"
- UploadButtonDisabledUrl="Upload.gif"
- CancelButtonUrl="Cancel.gif"
- CancelButtonOverUrl="CancelOver.gif"
- CancelButtonPressedUrl="Cancel.gif"
-
- ProgressBorderSize="0"
- ProgressBorderColor="#fff1dd"
- ProgressBackUrl="ProgressBackground.gif"
- ProgressForeUrl="ProgressFore.gif"
-
- MaxNumberFiles="1" MaxFileNumberReachedMessage="You can select only up to {0} files in one queue"
- MaxFileSize="2MB" MaxFileSizeReachedMessage="No files bigger than {0} are allowed"
- AllowedFileTypes="Web Images (Jpeg, Gig, Png):*.jpg;*.jpeg;*.png;*.gif"
-
- >
- <Adapters>
- <fjx:ThumbGeneratorAdapter Runat="server"
- Extensions="jpg;jpeg;gif;png;bmp" FolderName="/Control/Upload"
- Suffix="_thumb" MaximumWidth="200" MaximumHeight="200" />
- <fjx:FileSaverAdapter Runat="server" FolderName="/Control/Upload" />
- Adapters>
- fjx:FileUploader>
- ContentTemplate>
- asp:UpdatePanel>
- div>
- fieldset>
- <script type="text/javascript">
- function fn_fileStateChanged(uploader, file, httpStatus, isLast) {
- Flajaxian.fileStateChanged(uploader, file, httpStatus, isLast);
- if (file.state > Flajaxian.File_Uploading) {
- document.getElementById("<%= Button1.ClientID %>").click();
- }
- }
- script>
* This source code was highlighted with Source Code Highlighter.
Адаптер "
fjx:FileSaverAdapter
" (строчка 51) отвечает за сохранение фалов на диск, если вы планируете сохранять загружаемый файл сразу в базу (смотри пример ниже), то можете просто удалить строчку "fjx:FileSaverAdapter
".Адаптер "
fjx:ThumbGeneratorAdapter
" очень интересен. Он налету создает превьюшки загружаемых графических файлов.Вот пример серверных методов подвешенных на события выше приведенного кода:
- protected void FileUploader1_FileReceived(object sender, com.flajaxian.FileReceivedEventArgs e)
- {
- curProject = Utils.getParamString(Global.ManagementArgumnet.Project);
- curId = Utils.getParamInt(Global.ManagementArgumnet.ResellerId);
- int maxSizeAllowed = 2000000;
- int contentLenght = e.File.ContentLength;
- if (contentLenght <>
- {
- Stream stream = (Stream)e.File.InputStream;
- if (stream != null)
- {
- Reseller.TrySaveImage(curProject, curId, Library.ImageType.ResellerLogoBO, stream, contentLenght);
- }
- }
- }
- protected void Button1_Click(object sender, EventArgs e)
- {
- int rand = new Random().Next(0, 100000);
- imgBOLogo.ImageUrl = imgBOLogo.ImageUrl + "&random=" + rand;
- imgBOLogo.Visible = true;
- imgBOLogo.DataBind();
- UpdatePanel1.Update();
- }
* This source code was highlighted with Source Code Highlighter.