Ajax и загрузка файлов на сервер

Время от времени приходится организовывать возможность загрузки пользователями файлов на сервер: загрузка аватарок, файлов для галереи и т.д.  

Для решения этой задачи существует стандартный ASP.NET компонент FileUpload, который, в свою очередь, педставляет html-тэг . В простнйшем случае код для загрузки файлов будет выглядеть так: -  Default.aspx:

  • <%@ Page Language=“C#” AutoEventWireup=“true” CodeBehind=“Default.aspx.cs” Inherits=“WebApplication1._Default” %> -   - <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -   - <html xmlns=“http://www.w3.org/1999/xhtml"> - <head runat=“server”> -     <title></title> - </head> - <body> -     <form id=“form1” runat=“server”> -     <div> -         input type=“submit” value=“Upload” /> -     </div> -     </form> - </body> - </html> -   -  
  • - Default.aspx.cs
  • using System; - using System.Collections.Generic; - using System.Linq; - using System.Web; - using System.Web.UI; - using System.Web.UI.WebControls; - using System.IO; -   - namespace WebApplication1 - { -     public partial class _Default : System.Web.UI.Page -     { -         protected void Page_Load(object sender, EventArgs e) -         { -             if (IsPostBack && fu.FileContent != null) -             { -                 fu.PostedFile.SaveAs(path); -             } -         } -     } - } -   -  
  • - Default.aspx: 
  • <%@ Page Language=“C#” AutoEventWireup=“true” CodeBehind=“Default.aspx.cs” Inherits=“WebApplication1._Default” %> -   - <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -   - <html xmlns=“http://www.w3.org/1999/xhtml"> - <head runat=“server”> -     <title></title> - </head> - <body> -     <script type=“text/javascript”> -         function onFormSubmit() { -             var formUpload = document.getElementById(‘form1’); -             formUpload.target = ‘upload_target’; -             formUpload.action = ‘default.aspx’; -
    -         } -     </script> -     <form id=“form1” onsubmit=“onFormSubmit();”> -     <div> -         <input id=“file1” type=“file” name=“file1” /> <br /> -         <input id=“file2” type=“file” name=“file2” /> -         -         <input type=“submit” value=“Upload” /> -         -         <iframe id=“upload_target1” name=“upload_target” src=“” style=“width:0;height:0;border:0px solid #fff;“></iframe> -     </div> -     </form> - </body> - </html> -  
  • - Default.aspx.cs:
  • using System; - using System.Collections.Generic; - using System.Linq; - using System.Web; - using System.Web.UI; - using System.Web.UI.WebControls; - using System.IO; -   - namespace WebApplication1 - { -     public partial class _Default : System.Web.UI.Page -     { -         protected void Page_Load(object sender, EventArgs e) -         { -             if (IsPostBack) -             { -                 HttpFileCollection uploads = HttpContext.Current.Request.Files; -                 for (int i = 0; i < uploads.Count; i++) -                 { -                     HttpPostedFile upload = uploads[i]; -   -                     if (upload.ContentLength == 0) -                         continue; -   -                     upload.SaveAs(path); -                 } -   -             } -         } -     } - } -   -  
  • Tags

    .net .net-framework .net-framework-3.5 agile ajax ajax-control-toolkit ampq ansible apache asp.net asp.net-mvc automation axum babel bash benchmark blog blog-engine bootstrap buildout c# cache centos chrome ci cinder ckan cli cloud code-review codeplex community config debugger deface dependencies development-environment devices devstack devtime disks django dlr dns docker dockerimage dos easy_install elmah encoding environment-variables error event events everything-as-a-code exception exceptions fabrik firefox flask foreach forms fstab gae gcc gerrit git github go google google-app-engine grep hack hacked hardware headless horizon hound html hugo iaas ienumerable iis internet iptables iron-python ironic iscsi java-script javascript jenkins jquery js jsx kharkivpy kiss kombu kvm kyiv lettuce libvirt linux lio loci logging loopback losetup lvm mac-os macos mercurial microsoft microsoft-sync-framework mobile mono ms-office msbuild networking news nginx npm npx offtopic oop open-source open-xml opensource openstack openvswitch os packages paraller-development patterns-practices performance php pika pip plugins pnp podcast popup postgresql profiler project protocols proxy pycamp pycharm pycon pykyiv pylint pypi python python-3 qcow quantum qumy rabbitmq rar react reactjs refactoring rfc rhel search-engine security selenium server shell silverlight socket software-engineering source-control sourcegear-vault sources sql sql-server sql-server-express sqlalchemy ssh static-site sublimetext svg tests tgt tipfy tornado typescript uapycon ui uneta unit-tests upgrades usability vim virtualenv visual-studio vitrage vm vue.js vuejs web-development web-server web-service web_root webpack webroot windows windows-live word-press x32 x64 xcode xml xss xvfb интернет-магазин книги


    Archives

    2019 (73)
    2018 (2)
    2017 (3)
    2016 (2)
    2015 (3)
    2014 (5)
    2013 (17)
    2012 (22)
    2011 (35)
    2010 (25)
    2009 (35)
    2008 (32)
    2007 (2)