Quantcast
Channel: ppedv Team Blog
Viewing all articles
Browse latest Browse all 1198

HTML5 Datei Upload mit ASP.NET

$
0
0

Manches geht viel einfacher als man glaubt. File Upload ist eine übliche Aufgabe in Web Anwendungen und das klappt super. Eine begeisternde kurz Beschreibung.

Bisher habe ich für einen Dateiupload immer einen ASHX Handler geschrieben. Braucht man aber nicht, klappt auch mit einer einfachen aspx Seite.

   1:  Imports System.IO
   2:  PublicClass upload
   3:  Inherits System.Web.UI.Page
   4:  ProtectedSub Page_Load(ByVal sender AsObject, 
ByVal e As System.EventArgs) HandlesMe.Load
   5:  If IsPostBack Then
   6:              UploadFile(sender, e)
   7:  EndIf
   8:  EndSub
   9:  ProtectedSub UploadFile(sender AsObject, a As EventArgs)
  10:  Dim fc = Request.Files
  11:  For i = 0 To fc.Count - 1
  12:  Dim upload = fc(i)
  13:  Dim fn = Server.MapPath(".\daten\") + Path.GetFileName(fc(i).FileName)
  14:              upload.SaveAs(fn)
  15:  Next
  16:  EndSub
  17:  End Class

 

Der VB.NET Code beschreibt sich eigentlich von selbst.

Für den Design Teil, wird zunächst die CSS Regeln definiert. Es wird ein Bereich angelegt, der sich blau bzw. rot und blau verfärben soll.

image

   1:  <style>
   2:          #uploadzone {
   3:              width: 100px;
   4:              border: dashed thin #999;
   5:              height: 200px;
   6:              text-align: center;
   7:          }
   8:   
   9:              #uploadzone.hover {
  10:                  border-color: #aaa;
  11:                  background-color: #9cd0fc;
  12:              }
  13:   
  14:              #uploadzone.error {
  15:                  border-color: #f00;
  16:                  background-color: #faa;
  17:              }
  18:  </style>
  19:  

 

Im HTML Teil wird nur ein DIV als Ziel für Drag und Drop definiert. Der kurze JavaScript Teil dient zum registrieren des Drop Events und für die Prüfung der Flle API Fähigkeiten.

   1:  <formid="form1"runat="server"enctype="multipart/form-data">
   2:  <divid="uploadzone">Datei Drag&Drop</div>
   3:  </form>
   4:  <script>
   5:  if (window.File && window.FileList && window.FileReader) {
   6:  var z = document.getElementById('uploadzone');
   7:              z.addEventListener('dragover', handleDragOver, false);
   8:              z.addEventListener('drop', handleDropFile, false);
   9:          }
  10:  else {
  11:              alert('Kein HTML5 File API Support!');
  12:          }
  13:  </script>

 

Ein relativ großer JavaScript Block kümmert sich um die visuelle Interaktion und führt letztendlich den HTTP Post aus.

   1:  <script>
   2:  var files;
   3:  function handleDragOver(event) {
   4:  event.stopPropagation();
   5:  event.preventDefault();
   6:              document.getElementById('uploadzone').setAttribute("class", 'hover');
   7:          }
   8:   
   9:  function handleDropFile(event) {
  10:  event.stopPropagation();
  11:  event.preventDefault();
  12:   
  13:              files = event.dataTransfer.files;
  14:   
  15:  var form = document.getElementById('form1');
  16:  var data = new FormData(form);
  17:   
  18:  for (var i = 0; i < files.length; i++) {
  19:                  data.append(files[i].name, files[i]);
  20:              }
  21:  var xhr = new XMLHttpRequest();
  22:              xhr.onreadystatechange = function () {
  23:  if (xhr.readyState == 4) {
  24:  if (xhr.status == 200) {
  25:                          alert("upload erfolgreich");
  26:                          document.getElementById('uploadzone').
setAttribute("class", '');
  27:   
  28:                      } else {
  29:                          document.getElementById('uploadzone').
setAttribute("class", 'error');
  30:   
  31:                          alert("fehlgeschlagen");
  32:                      }
  33:                  }
  34:              };
  35:              xhr.open('POST', "Upload");
  36:              xhr.send(data);
  37:          }
  38:  </script>

Viewing all articles
Browse latest Browse all 1198

Trending Articles


Vimeo 10.7.1 by Vimeo.com, Inc.


UPDATE SC IDOL: TWO BECOME ONE


KASAMBAHAY BILL IN THE HOUSE


Girasoles para colorear


Presence Quotes – Positive Quotes


EASY COME, EASY GO


Love with Heart Breaking Quotes


Re:Mutton Pies (lleechef)


Ka longiing longsem kaba skhem bad kaba khlain ka pynlong kein ia ka...


Vimeo 10.7.0 by Vimeo.com, Inc.


FORECLOSURE OF REAL ESTATE MORTGAGE


FORTUITOUS EVENT


Pokemon para colorear


Sapos para colorear


Smile Quotes


Letting Go Quotes


Love Song lyrics that marks your Heart


RE: Mutton Pies (frankie241)


Hato lada ym dei namar ka jingpyrshah jong U JJM Nichols Roy (Bah Joy) ngin...


Long Distance Relationship Tagalog Love Quotes