2013-04-06 1 views
5

Do tej pory używałem 2 kontrolek (FileUpload i dodatkowy przycisk). Po wybraniu pliku w kontrolce fileUpload, użytkownik musiał zaakceptować swój wybór, naciskając przycisk zapisu.Jak sprawić, aby FileUpload kontrolowało przesyłanie plików zaraz po kliknięciu "Przeglądaj"?

Oto Buttona Kod:

protected void Button1_Click(object sender, EventArgs e) 
    { 
     if (FileUpload1.HasFile) 
     { 
      FileUpload1.SaveAs(Server.MapPath("~/file.jpg")); 
      Label1.Text = Server.MapPath("~/file.jpg"); 
      Image1.ImageUrl = "file.jpg"; 
     } 
    } 

Zastanawiam się, czy istnieje sposób, aby unikać tego przycisku, więc przycisk sterowania FileUpload byłby zrobić pracę dodatkowego przycisku.

Odpowiedz

4

Sterowanie FileUpload powoduje wyświetlenie <input type="file> w przeglądarce. Możesz użyć zdarzenia javascript change, aby uruchomić przesyłanie.

Najpierw upewnij się, że masz obsługi load zdarzeń zarejestrowanych w body swojej stronie:

<body onload="body_onload()"> 

I dodać ten kod wewnątrz obsługi zdarzenia:

<script type="text/javascript"> 
    function body_onload() 
    { 
     ... 

     $get('<%=FileUpload.ClientID%>').onchange = function() { 
      $get('<%=this.Page.Form.ClientID%>').submit(); 
     }; 
    } 
</script> 

Albo zrobić to przy użyciu czystego jQuery, umieść to w head twojej strony (jeśli nie masz jeszcze jQuery):

<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script> 

Następnie użyj tego kodu, aby powiązać ze zdarzeniem (zastąpić #fileUpload1 i #form1 z identyfikatorem tych waszych FileUpload i Form elementów, odpowiednio):

<script type="text/javascript"> 
    $(document).ready(function() { 
     $("#fileUpload1").change(function() { 
      $("#form1").submit(); 
     }); 
    }); 
</script>