heinetz: input[type="file"] und mobile devices

Hallo Forum,

ich baue gerade eine responsive HTML5-Website mit bootstrap. Auf der Seite gibt es einen Bereich, in dem der User Dateien hochladen kann … ich nenne es Upload-Widget ;)

Nun gibt es zwei Restriktionen:

  1. Die Dateien müssen PDFs sein.
  2. Die PDFs dürfen nicht grösser sein als 120MB

Um diese Restriktionen zu überprüfen gibt es natürlich zum Einen eine serverseitige Überprüfung. Zum Anderen eine clientseitige. Voraussetzung für diese clientseitige Überprüfung ist die JS File API. Steht die im Client nicht zur Verfügung wird mein Upload-Wigdet nicht angezeigt. Für diese Überprüfung benutze ich modernizr.

Nun funktionieren ja heute auf mobile Devices input[type="file"] auch. Auf meinem iPhone wird mir ein Dialog angezeigt, in dem ich wählen kann, ob ich ein Foto aufnehmen oder aus meinem Fotoalbum auswählen möchte. Das ist aber natürlich etwas grundsätzlich anderes, als eine Datei von meinem lokalen Laufwerk auszuwählen. Meines Wissens nach ist das nicht nur bei meinem iPhone, sondern grundsätzlich bei mobilen OS so.

Erste Frage: Stimmt das oder gibt es da Ausnahmen?

Für dem (mobilen) User, der nur Fotos hochladen kann, möchte ich mein Widget auch gernre ausblenden. Die Frage ist nur, wie erkenne ich das möglichst zuverlässig. Ich kann natürlich auch hier modernizr einsetzen und den Client auch touchevents überprüfen. Das ist sicher nah dran. Das liesse sich auch noch mit einer mobile-device-detection, die auf UA-Strings basiert kombinieren. Aber bei diesen Ansätzen geht es nur um Wahrscheinlichkeiten.

Hat jemand einen anderen Ansatz?

1000 Dank für Tipps und

beste gruesse, heinetz

  1. @@heinetz

    Für dem (mobilen) User, der nur Fotos hochladen kann, möchte ich mein Widget auch gernre ausblenden. Die Frage ist nur, wie erkenne ich das möglichst zuverlässig. Ich kann natürlich auch hier modernizr einsetzen und den Client auch touchevents überprüfen. Das ist sicher nah dran.

    Nein, das ist weit weg. Es gibt Desktop-Geräte, die Touch-Events unterstützen.

    LLAP 🖖

    --
    „Wir haben deinen numidischen Schreiber aufgegriffen, o Syndicus.“
    „Hat auf dem Forum herumgelungert …“
    (Wachen in Asterix 36: Der Papyrus des Cäsar)
    1. Aloha ;)

      Nein, das ist weit weg. Es gibt Desktop-Geräte, die Touch-Events unterstützen.

      ...und zwar immer mehr. Die meisten Laptops werden heutzutage mit Touchscreen verkauft, Convertibles sind nicht wirklich von Mobilgeräten unterscheidbar und mit Windows 10 verschwimmen die Grenzen immer mehr, da nicht mal mehr unterschiedliche Betriebssysteme eingesetzt werden (übrigens einer der wenigen Aspekte an Windows 10, den ich gut finden kann - wenn auch nicht seine indirekten Auswirkungen).

      Grüße,

      RIDER

      --
      Camping_RIDER a.k.a. Riders Flame a.k.a. Janosch Zoller
      # Facebook # Twitter # Steam # YouTube # Self-Wiki # Selfcode: sh:) fo:) ch:| rl:) br:^ n4:? ie:% mo:| va:) js:) de:> zu:} fl:( ss:) ls:[
      1. Moin!

        Convertibles sind nicht wirklich von Mobilgeräten unterscheidbar und mit Windows 10

        verschwimmen die Grenzen immer mehr, da nicht mal mehr unterschiedliche Betriebssysteme eingesetzt werden

        Auch die Antwort auf die Frage, was denn im Hinblick auf die Hardware ein "mobiles device" sei, wird immer schwieriger. Inzwischen gibt es ja schon Autos mit einem 15 Zöller (hochkant) in der Mittelkonsole. Und ist ein Raspberry Pi, Banana Pi oder ein Odroid nun mobil oder nicht?

        Jörg Reinholz

        1. Hallo,

          Inzwischen gibt es ja schon Autos mit einem 15 Zöller (hochkant) in der Mittelkonsole.

          Hast du etwa noch nicht in einem Tesla gesessen?

          Gruß
          Kalk

          1. Moin!

            Inzwischen gibt es ja schon Autos mit einem 15 Zöller (hochkant) in der Mittelkonsole.

            Hast du etwa noch nicht in einem Tesla gesessen?

            Mit dem gab's ein Problem. Habe versucht auf dem halben Bildschirm (auf der anderen Hälfte lief die Navigation) Doom zu spielen und die Funktionstasten des Lenkrades an das Spiel gebunden. Leider waren die Wads irgendwie nicht mit der Navigation in Übereinstimmung zu bringen und ich musste an Stellen durch die Wände, wo keine Tore waren … idclip brachte mich auch nicht an Ziel weil ich irgendwie Navi und Doom verwechselte und iddqd machte auf die Polizei keinerlei Eindruck.

            Fazit: Ist ein Scheiß-Auto!

            Jörg Reinholz

    2. @@heinetz

      Für dem (mobilen) User, der nur Fotos hochladen kann, möchte ich mein Widget auch gernre ausblenden. Die Frage ist nur, wie erkenne ich das möglichst zuverlässig. Ich kann natürlich auch hier modernizr einsetzen und den Client auch touchevents überprüfen. Das ist sicher nah dran.

      Nein, das ist weit weg. Es gibt Desktop-Geräte, die Touch-Events unterstützen.

      Dann kann ich also nicht wirklich herausfinden, welches Endgerät dem User erlaubt, ein PDF auszuwählen und die input[type="file"] zu verbergen, wenn er nur ein Foto aus seinem Album auswählen darf?

      gruss, heinetz

      1. Aloha ;)

        Dann kann ich also nicht wirklich herausfinden, welches Endgerät dem User erlaubt, ein PDF auszuwählen und die input[type="file"] zu verbergen, wenn er nur ein Foto aus seinem Album auswählen darf?

        Nein, eher nicht. Macht ja auch Sinn; immerhin gibt das einiges über das Gerät, Betriebssystem, installierte Apps, ... preis. Was ich damit sagen will: Das wird sich nicht ändern, weil es lediglich für Seitenbetreiber und Webentwickler ein Ärgernis ist, dass das nicht geht, für den Benutzer aber im Endeffekt wahrscheinlich eher ein Gewinn an Privatsphäre darstellt.

        Grüße,

        RIDER

        --
        Camping_RIDER a.k.a. Riders Flame a.k.a. Janosch Zoller
        # Facebook # Twitter # Steam # YouTube # Self-Wiki # Selfcode: sh:) fo:) ch:| rl:) br:^ n4:? ie:% mo:| va:) js:) de:> zu:} fl:( ss:) ls:[
      2. @@heinetz

        Dann kann ich also nicht wirklich herausfinden, welches Endgerät dem User erlaubt, ein PDF auszuwählen und die input[type="file"] zu verbergen, wenn er nur ein Foto aus seinem Album auswählen darf?

        Nein.

        Wie so oft bei fehlerbehafteten Klassifikationen sind die Folgen von false positive und false negative zu bedenken:

        • FP: Der Test ermittelt, dass ein Gerät ein Feature unterstützt, obwohl es das nicht tut.

          Die Folge ist, dass dem Nutzer etwas angeboten wird, was nicht richtig funktioniert. Ein kleines Ärgernis.

        • FN: Der Test ermittelt, dass ein Gerät ein Feature nicht unterstützt, obwohl es das tut.

          Die Folge ist, dass dem Nutzer etwas vorenthalten wird, obwohl es auf seinem Gerät funktionieren würde. Das Feature ist nicht benutzbar. Ein wohl großes Ärgernis.

        Wenn man Geräte beurteilt, ob sie Nutzern erlauben, bei <input type="file"/> auch PDFs auszuwählen, sollte man eher mehr Geräte durchlassen als zu wenige. Im Extremfall also alle, also auf den Test (user agent sniffing) ganz verzichten.

        LLAP 🖖

        --
        „Wir haben deinen numidischen Schreiber aufgegriffen, o Syndicus.“
        „Hat auf dem Forum herumgelungert …“
        (Wachen in Asterix 36: Der Papyrus des Cäsar)
  2. Aloha ;)

    Nun funktionieren ja heute auf mobile Devices input[type="file"] auch. Auf meinem iPhone wird mir ein Dialog angezeigt, in dem ich wählen kann, ob ich ein Foto aufnehmen oder aus meinem Fotoalbum auswählen möchte. Das ist aber natürlich etwas grundsätzlich anderes, als eine Datei von meinem lokalen Laufwerk auszuwählen. Meines Wissens nach ist das nicht nur bei meinem iPhone, sondern grundsätzlich bei mobilen OS so.

    Erste Frage: Stimmt das oder gibt es da Ausnahmen?

    Wenn ich mich recht erinnere ist Chrome for Android da flexibler - ich kanns aber nicht für dich testen, weil mein Android-Tablet seit etwa einem Monat im Eimer ist.

    Grüße,

    RIDER

    --
    Camping_RIDER a.k.a. Riders Flame a.k.a. Janosch Zoller
    # Facebook # Twitter # Steam # YouTube # Self-Wiki # Selfcode: sh:) fo:) ch:| rl:) br:^ n4:? ie:% mo:| va:) js:) de:> zu:} fl:( ss:) ls:[