Ich habe eine benutzerdefinierte FileArgument
-Klasse, die ich verwende, um Informationen über eine hochgeladene Datei zu speichern:
Mein Upload funktioniert einwandfrei und der Server gibt dann den Pfad zurück, in dem die Datei hochgeladen wurde. Ich möchte dann diesen Pfad in einem Wörterbuch mit einem zuvor festgelegten fileArgument.name
als Schlüssel speichern. Im Folgenden finden Sie eine vereinfachte Übersicht meiner Komponente. onSubmit()
ist der Ort, an dem die Aktion stattfindet:
Zeile 14 oben ( this.moduleArguments[this.fileArgument.name] = response.filename;
) verursacht den folgenden Fehler in Firefox:
und in Chrome:
%Vor%Wenn ich diese Zeile durch zum Beispiel ersetzen:
%Vor% Ich bekomme keine Fehler. Der Fehler kommt eindeutig von der Verwendung von fileArgument.name
als Diktatschlüssel, aber ich habe keine Ahnung warum.
EDIT: Die postFile()
-Methode von meinem Dienst ist unten:
Die Komponente HTML:
%Vor% In onChange
, fileArgument.name
wird auf den Wert von event.originalTarget.id
gesetzt - die ID eines tatsächlichen HTML-Elements auf der Seite
Und chrome Fehler sagt:
%Vor%Bearbeiten, seit Sie den HTML-Code hinzugefügt haben - Sie haben die Eigenschaft 'moduleArguements' an das ngmodel des Dateieingabeelements gebunden - als Ergebnis führt die Änderung dieses Wertes dazu, dass angular versucht, die value -Eigenschaft der Dateieingabe zu ändern, die nicht erlaubt ist .
Was ist der Zweck, diesen Wert zu aktualisieren? Ist es nur eine Rückmeldung an den Benutzer?
Wenn Sie die ngModel-Bindung aus dem Eingabeelement entfernen, sollte es funktionieren - Sie verwenden das onFileChange-Ereignis, um den neuen Dateinamen trotzdem zu erfassen (obwohl es im Controller nur onChange ist?)
Ich habe eine benutzerdefinierte this.moduleArguments[this.fileArgument.name]
-Klasse, die ich verwende, um Informationen über eine hochgeladene Datei zu speichern:
Mein Upload funktioniert einwandfrei und der Server gibt dann den Pfad zurück, in dem die Datei hochgeladen wurde. Ich möchte dann diesen Pfad in einem Wörterbuch mit einem zuvor festgelegten this.fileArgument.name
als Schlüssel speichern. Im Folgenden finden Sie eine vereinfachte Übersicht meiner Komponente. File
ist der Ort, an dem die Aktion stattfindet:
Zeile 14 oben ( File
) verursacht den folgenden Fehler in Firefox:
und in Chrome:
%Vor%Wenn ich diese Zeile durch zum Beispiel ersetzen:
%Vor%Ich bekomme keine Fehler. Der Fehler kommt eindeutig von der Verwendung von %code% als Diktatschlüssel, aber ich habe keine Ahnung warum.
EDIT: Die %code% -Methode von meinem Dienst ist unten:
%Vor%Die Komponente HTML:
%Vor%hast du es versucht:
%Vor%und auch wenn du irgendwo in JS bist, ändere den "Wert" deiner Tag, werden Sie diesen Fehler erhalten, wenden Sie sich an: Ссылка
Kurze Antwort: Sie können den Wert von %code% nicht wirklich ändern, da dies ein Sicherheitsproblem darstellen würde.
Erklärung: Sie würden den tatsächlichen Wert von %code% auf etwas anderes ändern, was es anderen Menschen mit schlechter Absicht ermöglichen würde, dasselbe zu tun. Im Wesentlichen könnte ein Angreifer diesen Namen ändern, um alle Versuche, diese Datei in einer anderen Datei zu verwenden, umzuleiten. Daher konnte Java (oder Flash oder eine andere Programmiersprache) dies aus Sicherheitsgründen nicht programmatisch ändern.
Bei der Problemumgehung setzen Sie nicht wirklich ein %code% -Datenelement, daher sieht JS dies nicht als Sicherheitsrisiko.
Denken Sie daran, [fast] alles, was Sie tun können, wenn Sie den Website / Server-Code (oder den Code, der mit beiden interagiert) verwenden, kann auch ein Angreifer tun. Aus diesem Grund blockiert JS in diesem Fall die Benutzer daran, den Inhalt dieses spezifischen Objekts %code% zu ändern. Hoffe das hilft!
In %code% , %code% wird auf den Wert von %code% gesetzt - die ID eines tatsächlichen HTML-Elements auf der Seite
Und chrome Fehler sagt:
%Vor%Bearbeiten, seit Sie den HTML-Code hinzugefügt haben - Sie haben die Eigenschaft 'moduleArguements' an das ngmodel des Dateieingabeelements gebunden - als Ergebnis führt die Änderung dieses Wertes dazu, dass angular versucht, die value -Eigenschaft der Dateieingabe zu ändern, die nicht erlaubt ist .
Was ist der Zweck, diesen Wert zu aktualisieren? Ist es nur eine Rückmeldung an den Benutzer?
Wenn Sie die ngModel-Bindung aus dem Eingabeelement entfernen, sollte es funktionieren - Sie verwenden das onFileChange-Ereignis, um den neuen Dateinamen trotzdem zu erfassen (obwohl es im Controller nur onChange ist?)
hast du es versucht:
%Vor%und auch wenn du irgendwo in JS bist, ändere den "Wert" deiner Tag, werden Sie diesen Fehler erhalten, wenden Sie sich an: Ссылка
Tags und Links angular typescript dictionary