In meiner Ruby on Rails-App habe ich eine einfache Schaltfläche zum Hochladen von Dateien, die ich mit Hilfe der Datei- / FileReader-APIs in HTML5 durch eine Drag-and-Drop-Box zu ersetzen versuche, indem ich dieses Tutorial speziell. Ich verwende ein Ruby-Skript, um die Datei in meinen öffentlichen / Datenordner hochzuladen. Ich bin mir nicht sicher, wie ich das Drag-and-Drop-Skript damit integrieren kann. Meine Idee war, die Datei-Upload-Schaltfläche, die ich bereits ausgeblendet hatte, zu erstellen und Javascript zu verwenden, um seinen Wert auf den Pfad des Drag & Drop-Bildes festzulegen, wenn der Benutzer versucht, zu senden.
Wenn ich jedoch versuche, etwas zu übermitteln, erhalte ich den Fehler:
Dateiname zu lang - public / data / data: Bild / jpeg; base64, / 9j / 4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP / sABFEdWNreQABAAQAAABkAAD / 4QMtaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNj ....
, weil der von HTML5 angegebene Name für die temporäre Dateispeicherung einfach zu lang ist, denke ich.
Ich habe versucht, die Zeichenfolge mit den ersten 60 Zeichen zu verketten und dann gab es den Fehler:
Keine solche Datei oder kein Verzeichnis - public / data / data: image / jpeg; base64, / 9j / 4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAA
In jedem Fall wird die Datei nicht zum Ordner public/data
hinzugefügt.
Mein HTML:
%Vor%Ruby:
%Vor%und JS:
%Vor%Das Problem sieht so aus, als würden Sie die Datei als Base64-codierte Daten-URL senden. Das ist in Ordnung, aber der Dateiname passt nicht dazu, wenn Sie an den Server POST senden. Sie können den Dateinamen extrahieren, bevor Sie die Datei in eine Daten-URL konvertieren, damit Sie sie zusammen mit der Datei in den Parametern senden können. Oder erstellen Sie einen neuen Dateinamen (UUID) wie Madao vorgeschlagen.
Dies sollte zumindest dein Problem mit dem Dateinamen beheben:
%Vor%Tags und Links ruby javascript ruby-on-rails html5