2012-04-09 3 views
0

Ich habe ein asp.net Formular mit 5 HTML-Datei Eingabesteuerelemente mit runat = Server und einem Absenden-Button. Nachdem der Benutzer die Dateien ausgewählt und auf die Schaltfläche Senden geklickt hat, werden die Dateien auf den Server hochgeladen.Wie kann man verhindern, dass Benutzer den Dateipfad in HTML-Dateieingabesteuer manuell bearbeiten?

Problem ist die HTML-Datei Eingabesteuerelemente sind editierbar, und Benutzer kann den Pfad bearbeiten, nachdem er die Datei bereits aus der Schaltfläche Durchsuchen ausgewählt hat.

Wenn er einen ungültigen Dateipfad eingibt, wird die Datei nicht hochgeladen, da sie nicht existiert.

Wie kann ich verhindern, dass Benutzer den Dateipfad manuell ändern? Ich habe versucht, die Kontrollen nur lesen, aber es deaktiviert auch die Schaltfläche Durchsuchen.

Antwort

0

Sie könnten versuchen, etwas wie ein verstecktes Feld und wenn der Benutzer wählt die Datei aus durchsuchen, es füllt auch das versteckte Feld. Dann, wenn sie hochladen, lesen Sie entweder aus dem versteckten Feld für Ihren Upload oder verwenden JS ersetzen Sie die Werte zurück zum ursprünglichen Steuerelement und lesen Sie von diesem.

+0

, die die gültige Datei hochladen, auch wenn der Benutzer den Pfad zu ungültig geändert hat/oder den gesamten Pfad löscht. :-( –

+0

Dateieingaben werden nur von JavaScript gelesen ... und das Kopieren ihres Wertes in eine versteckte Eingabe führt nicht dazu, dass die versteckte Eingabe eine Datei hochlädt. – Quentin

+0

Ja, es würde etwas Backend-Code erfordern, um es auf diese Weise zu verwalten ein asynchroner Upload, sobald die gültige Datei ausgewählt ist, startet sie den Prozess, anstatt darauf zu warten, dass der Benutzer auf den Upload klickt. Dies würde verhindern, dass sie den Dateipfad ändern. – Brian

6

Sie können nicht. Schreiben Sie Ihre serverseitige Logik, um mit fehlenden Uploads fertig zu werden.

0

Ist das, was Sie haben wollen ...

Sie mögen, dass die Steuer versteckt tun können, wenn Benutzer die Datei und zeigt nur den Weg für den Benutzer in einem div wählen, wenn er nicht einverstanden sind, lassen ihn auf einen Link klicken Another nächsten wählen auf den Pfad div aufgerufen, so dass, wenn Benutzer klicken Sie auf einen anderen wählen die gleiche div wechseln mit den vorherigen Wert Spülung

sehen diese Geige: http://jsfiddle.net/T2D3X/

0

Während Brians Vorschlag funktioniert (Danke brian dafür), f In der Tat haben wir uns entschieden, den serverseitigen Handhabungsansatz zu verfolgen. Da im Falle einer ungültigen Datei die Dateigröße Null ist, ist die Antwort sofort und wir müssen nicht warten, bis die Datei hochgeladen wird, da in diesem Fall keine Datei an erster Stelle steht.

//check if file exists 

       if (uploadCtrl.PostedFile.ContentLength > 0) 
       { 
        uploadCtrl.PostedFile.SaveAs(fileNameWithPath); 
        uploadCtrl.Dispose(); 
       } 
       else 
       { 
        fileNameWithPath = "invalid"; 
       } 
0

Sie können auch diese Methoden verwenden:

One vor Validierung: http://jsfiddle.net/T2D3X/1/

One Nach Validierung: http://jsfiddle.net/T2D3X/2/

Freund von mir die gleiche Antwort geschrieben, bevor ich es wieder geändert haben .

Es gibt einige interne jsfiddle Fehler auf der zweiten Verbindung, die Sie ignorieren können, ich habe gerade funktional hinzugefügt, um zu prüfen, was genau Wert Sie senden senden.

Lassen Sie uns wissen, wenn Sie es hilfreich finden;) Vielen Dank!

Verwandte Themen