kettenschutz: ASP - HTML - mit <input type="file"> Ordner auswählen lassen

Servus liebe SelfHTML gemeinde :) ich habe da mal wieder ein kleines Anliegen, welches einschlägige Suchmaschinen verweigern aus "Sicherheitsgründen". So richtig kann ich mir das aber gar nicht vorstellen. Folgendes Szenario

Wir befinden uns im Intranet, auf einer Nachrichtenseite, über welche unsere Mitarbeiter Nachrichten verteilen können. Diese Nachrichten werden in verschiedenen Zellen in einer Datenbank gespeichert. Zusätzlich kann noch eine Datei angehangen werden (Nicht direkt, sondern nur der Link der Datei, da sich die Dateien selbst bereits im Intranet befinden) Das funktioniert bereits alles ganz prima, das "anhängen" bzw. verknüpfen der Dateien erreiche ich über

<form method="post"> <input name="attachment" type="file" size="50"> </form>

Das gibt dem User das Explorer-Auswahlfenster für die Wahl der Datei.

Nun hätte ich gerne noch genau die selbe Möglichkeit um einen "lokalen" (im Intranet befindlichen) Ordner zu verknüpfen. input type="folder" gibts leider nicht. Es sollte sich eine Auswahlbox öffnen, über die ein Ordner gewählt werden kann, um dann seinen Link zu erhaschen.

Wir arbeiten übrigens ausschließlich mit dem IE 11.

Ist dies wirklich nicht ohne weiteres möglich, aus Sicherheitsgründen? Es soll ja nicht einmal ein Upload statt finden. Der User soll lediglich einen Ordner auswählen können, und ich will den Pfad des Ordners übernehmen und ablegen.

Ich hoffe, ihr habe eine Idee für mich 😀 mfg

  1. hi,

    <form method="post"> <input name="attachment" type="file" size="50"> </form>

    ist Unfug.

    Ist dies wirklich nicht ohne weiteres möglich, aus Sicherheitsgründen? Es soll ja nicht einmal ein Upload statt finden.

    Eben. Genau deswegen ist das Unfug.

    Wir arbeiten übrigens ausschließlich mit dem IE 11.

    Reicht der immer noch die lokalen Pfadangaben durch? Das wäre ein Bug. Es gibt jedoch andere Möglichkeiten auf NetBIOS Ebene zum Managen von Workstations. MfG

    1. ich hab überhaupt keine Ahnung in welcher Art und Weise du jetzt versucht hast zu helfen. Aber das kenne ich ja schon

      Was soll das mit dem Unfug? Ich habe versucht eine klare Frage zu stellen, und die sollte auch verständlich angekommen sein.

      Was hat das mit NetBios zu tun? Ich will keine namensauflösung oder sonstigen Kladderadatsch. Das hat auch nichts - aus dem selben unfugigen Grund - mit Workstations zu tun. Überhaupt nichts.

      Entweder hast du mein Problem nicht verstanden, dann entschuldige ich mich für meine schlechte Ausführung, oder du hast einfach spaß daran sowas von dir zu geben

      1. Hi,

        Was soll das mit dem Unfug? Ich habe versucht eine klare Frage zu stellen, und die sollte auch verständlich angekommen sein.

        Also noch einmal: Was Du machen willst, nutzt einen Bug des IE, eine Sicherheitslücke. Und genau das ist der Unfug. Was machst Du, wenn es den Bug nicht mehr gibt!? Dann funktioniert Deine Anwendung nicht mehr! Deswegen ja mein Hinweis auf NetBIOS.

        Und gerne auch noch einmal: FileUpload via HTTP kennt den lokalen Pfad nur lokal, also im Browser. HTTP kennt nicht einmal Dateinamen und auch keine Dateitypen sondern nur Inhalte.

        Das sind ein paar Grundsätze die ich Dir wärmstens empfehle wenn es um Web-Anwendungsentwicklung geht.

        MfG

  2. Hallo @kettenschutz,

    Servus liebe SelfHTML gemeinde :)

    (Wird es nicht SELFHTML und Gemeinde, zusammen also SELFHTML-Gemeinde, geschrieben?)

    ich habe da mal wieder ein kleines Anliegen, welches einschlägige Suchmaschinen verweigern aus "Sicherheitsgründen".

    Suchmaschinen verweigern dein Anliegen aus Sicherheitsgründen? Suchst du Ü18-Inhalte oder möchtest du eine Bombe bauen?

    Zusätzlich kann noch eine Datei angehangen werden (Nicht direkt, sondern nur der Link der Datei, da sich die Dateien selbst bereits im Intranet befinden) Das funktioniert bereits alles ganz prima, das "anhängen" bzw. verknüpfen der Dateien erreiche ich über

    <form method="post">
        <input name="attachment" type="file" size="50"> 
    </form>
    

    Ein Dateiupload ist ein Dateiupload und ein Formular ohne Submit-Button kann u.U. nicht gescheit abgesendet werden. Aber da du ja eigentlich gar keinen Dateiupload haben möchtest, sondern nur einen Verweis, muss deine Webanwendung Zugriff auf den Share haben und dessen Inhalt als Auswahl zur Verfügung stellen.

    Nun hätte ich gerne noch genau die selbe Möglichkeit um einen "lokalen" (im Intranet befindlichen) Ordner zu verknüpfen. input type="folder" gibts leider nicht.

    Ja wie auch? Auf HTTP-Ebene existiert das Konzept „Ordner“ nicht. Wie soll denn ein „Ordner-Upload“ aussehen?

    Es sollte sich eine Auswahlbox öffnen, über die ein Ordner gewählt werden kann, um dann seinen Link zu erhaschen.

    Siehe oben.

    Wir arbeiten übrigens ausschließlich mit dem IE 11.

    Noch. AFAIK ist da mit dem Erscheinen von Edge das Lebensende absehbar.

    Ist dies wirklich nicht ohne weiteres möglich, aus Sicherheitsgründen?

    Das sind keine Sicherheitsgründe, sondern das ist dem Konzept von HTTP „geschuldet“.

    Viele Grüße
    Robert

    1. Wir arbeiten übrigens ausschließlich mit dem IE 11. Noch. AFAIK ist da mit dem Erscheinen von Edge das Lebensende absehbar.

      10. Januar 2023

      Außer Microsoft entscheidet sich für einen Backport von Edge, bzw. noch für einen IE 12, scheint mir aber unwahrscheinlich.

  3. Hallo,

    so eine Art Browsing auf dem Server kannst du über die Servereinstellung (Options +Indexes) erreichen. Ich mache es so, dass ich per httpRequest das Inhaltsverzeichnis auslese, filtere, und dann in ein Select lege. Beispiel Ordner lesen

    Gruß
    Jürgen

    1. Hallo,

      jetzt interresiert es mich aber doch, warum ich für diese Antwort ein „-“ bekommen habe.

      Gruß
      Jürgen

      1. Hi

        vielleicht, weil Du mit deinem Tipp die verschiedenen Schichten von Zugriffsrechten sträflich missachtest?

        LG
        MR

      2. das kann ich dir leider nicht mitteilen. ich habe nichts vergeben ich könnte mir aber vorstellen, dass jemand RobertB mit JürgenB verwechselte. Das ging mir auch kurz so, und die Antwort von RobertB war qualitativ eher minderwertig. Du hast ja wenigstens noch versucht zu helfen :)

        1. Hallo @kettenschutz,

          wie wäre es, wenn du mir direkt mitteilst, was dich an meiner Antwort stört?

          Vielen Dank,
          Robert

        2. Hallo kettenschutz,

          und die Antwort von RobertB war qualitativ eher minderwertig.

          Das sehe ich nicht.

          Bis demnächst
          Matthias

          --
          Rosen sind rot.
      3. Tach!

        jetzt interresiert es mich aber doch, warum ich für diese Antwort ein „-“ bekommen habe.

        Ich war es nicht, aber dem OP geht es nicht darum, Inhalte von dem Server bereits bekannten Verzeichnissen zu listen, sondern darum, dass Anwender einen Verzeichnisnamen auswählen und übermitteln können.

        dedlfix.

        1. Hallo,

          Ich war es nicht, aber dem OP geht es nicht darum, Inhalte von dem Server bereits bekannten Verzeichnissen zu listen, sondern darum, dass Anwender einen Verzeichnisnamen auswählen und übermitteln können.

          OK, da war ich mir auch nicht sicher, ob der zu übermittelnde Ordner per http- oder per file-Protokoll zu erreichen ist, also ob mit Intranet ein Webserver im Haus oder ein Netzwerklaufwerk gemeint ist. Ich bin von Erstem ausgegangen.

          Gruß
          Jürgen

          1. Tach!

            Ich war es nicht, aber dem OP geht es nicht darum, Inhalte von dem Server bereits bekannten Verzeichnissen zu listen, sondern darum, dass Anwender einen Verzeichnisnamen auswählen und übermitteln können.

            OK, da war ich mir auch nicht sicher, ob der zu übermittelnde Ordner per http- oder per file-Protokoll zu erreichen ist, also ob mit Intranet ein Webserver im Haus oder ein Netzwerklaufwerk gemeint ist. Ich bin von Erstem ausgegangen.

            Nun, der Server wird den Ordner vielleicht erreichen können, aber der springende Punkt ist, dass er dessen Namen noch gar nicht kennt, weil gerade dieser erst vom Nutzer ausgewählt werden soll und an den Server übermittelt werden muss. Das aber lässt sich nicht mit einem einfachen input-Element und auch nicht mit einem Auflisten von Inhalt eines dem Server noch nicht bekannten Verzeichnisses lösen.

            dedlfix.

            1. Hallo,

              OK, da war ich mir auch nicht sicher, ob der zu übermittelnde Ordner per http- oder per file-Protokoll zu erreichen ist, also ob mit Intranet ein Webserver im Haus oder ein Netzwerklaufwerk gemeint ist. Ich bin von Erstem ausgegangen.

              Nun, der Server wird den Ordner vielleicht erreichen können, aber der springende Punkt ist, dass er dessen Namen noch gar nicht kennt, weil gerade dieser erst vom Nutzer ausgewählt werden soll und an den Server übermittelt werden muss. Das aber lässt sich nicht mit einem einfachen input-Element und auch nicht mit einem Auflisten von Inhalt eines dem Server noch nicht bekannten Verzeichnisses lösen.

              über Input nicht, aber daher habe ich ja meine Beispielseite verlinkt.

              Allerdings verunsicherst du mich jetzt. Ich bin davon ausgegangen, das die Options +Indexes auch die Namen der Unterordner liefert. Wenn ich da falsch liege, ist meine Antwort wirklich nicht hilfreich.

              Gruß
              Jürgen

              1. Tach!

                Allerdings verunsicherst du mich jetzt. Ich bin davon ausgegangen, das die Options +Indexes auch die Namen der Unterordner liefert. Wenn ich da falsch liege, ist meine Antwort wirklich nicht hilfreich.

                Es ging nach meinem Verständnis überhaupt nicht darum, etwas aufzulisten, sondern den Namen eines von Nutzer zu wählenden Ordners zu übertragen. Ob das später gelistet werden soll, war nicht Bestandteil des Problems.

                dedlfix.

                1. Hallo,

                  wenn der Ordner dann aber über das http-Protokoll zu erreichen ist, kann ich ihn mir anzeigen lassen, wenn ich den übergeordneten Ordner kenne und in diesem „Options +Indexes“ gesetzt ist; und wenn das denn auch Ordner und nicht nur Files auflistet. Mit <input ...> geht das natürlich nicht.

                  Gruß
                  Jürgen

                  1. Tach!

                    wenn der Ordner dann aber über das http-Protokoll zu erreichen ist, kann ich ihn mir anzeigen lassen, wenn ich den übergeordneten Ordner kenne und in diesem „Options +Indexes“ gesetzt ist; und wenn das denn auch Ordner und nicht nur Files auflistet. Mit <input ...> geht das natürlich nicht.

                    Ja, sicher das, aber das Auflisten-Lassen durch den apacheinternen Verzeichnisauflistungsmechanis bringt dich nicht wirklich weiter.

                    Zum Beispiel sollen die Nutzer vielleicht eine Oberfläche zu sehen bekommen, die ihnen auflistet

                    • Speiseplan
                    • Arbeitsschutzdokumente
                    • andere ganz wichtige Dinge.

                    Das sollen Links werden, die auf Dokumente oder Verzeichnisse verweisen. Der Speiseplan ist ein einzelnes Dokument, die vom Arbeitsschutz liegen in einem Verzeichnis. (Wie das Verzeichnis am Ende dargeboten wird, ist nicht Bestandteil des Fragestellung.)

                    Der Nutzer soll nicht das gesamte Netzlaufwerk (oder mehrere) durchsuchen müssen, um die Dokumente zu finden, sondern ein Admin soll über die zu schreibende Anwendung für die Einträge das entsprechende Verzeichnis (oder Dokumente) wählen und zuordnen können.

                    Das ist das Problem, bei dem man im Falle der Verzeichnisse weder mit <input> noch mit dem apacheinternen Listingmechanismus weiterkommt. Letzterem fehlt die Möglichkeit, einen Ordner wählen zu können, und daraufhin einem Script Bescheid zu sagen, dass dessen Name gespeichert werden soll.

                    dedlfix.

        2. Hallo @dedlfix,

          Dem OP geht es nicht darum, Inhalte von dem Server bereits bekannten Verzeichnissen zu listen, sondern darum, dass Anwender einen Verzeichnisnamen auswählen und übermitteln können.

          im Ausgangsposting heißt es allerdings, dass die Ordner „im Intranet“ liegen, also nicht auf dem lokalen Rechner, sondern einem Share o.ä.

          Viele Grüße
          Robert