Ich habe die ähnliche Frage wie Modify image obtained from loopback-component-storage, aber die Antwort ist nicht zufriedenstellend für mich.Validieren und Rename Bilddatei von Loopback-Komponente-Speicher
Verwenden Sie das gleiche Beispiel:
Auf Client-Seite
Upload.upload(
{
url: '/api/containers/container_name/upload',
file: file,
fileName: "demoImage.jpg",
//Additional data with file
params:{
username : username
}
});
Dies ist die Voraussetzung:
- Validate der Dateityp der Datei
- das Ändern Name gespeichert im Server
- Ablehnen, wenn ungültige Datei oder Benutzername
Hier einige Referenz, die ich verwendet und begegnet:
Der Benutzername erforderlich ist, so dass es ein Benutzer Methode sein sollte. Ich habe eine Remote-Methode wie in https://stackoverflow.com/a/31118294/5241407 hinzugefügt und die API in/api/usermodel /: id/upload geändert. Einige Codes wurden in remoteMethod hinzugefügt, um den Benutzernamen an die Funktion
container.upload
zu senden. Ist es möglich, dass wir den Dateityp validieren und den Dateinamen in dieser Phase ändern, damit ich einen Fehler zurückgeben kann, wenn der ungültig ist?Ich habe configure-storage.js in Boot-Datei wie in https://stackoverflow.com/a/31059880/5241407 verwendet, aber diese Lösung ist nicht ausreichend. Wenn der Client einen ungültigen Dateityp sendet, wird der Server einen Fehler ausgeben, was nicht erwartet wird. Es ist besser, die Abfrage mit einer Fehlerantwort abzulehnen, anstatt einen Systemfehler auszulösen. So, wie man Fehler zurückbringt, ohne einen Fehler im Systemlevel zu werfen?
Sobald ich eine PNG-Datei hochladen und überprüft die Datei.Type in configure-storage.js, nur um zu finden, dass der Dateityp Application/Octet-Stream anstelle von Bild/PNG ist. Dies ist der Code, den ich zum Sondieren verwendet habe:
curl -X POST --header "Content-Type: multipart/form-data" --header "Accept: application/json" "HOST/api/usermodel/userId/upload" -F "[email protected]"
Dieses unerwartete Ergebnis kann die Beurteilung des Dateityps behindern.
Ja, Remote-Methode, die Sie anpassen können. Inhaltstypen sollten in Ordnung sein, glaube ich. – anoop
Danke. Aber allowedContentTypes kann das 'application/octet-stream'-Problem immer noch nicht lösen. Ich finde den Grund, dass MINI Typ beim Senden der Datei definiert werden sollte. Übrigens sollte die Methode von beforeRemote hochgeladen werden anstatt zu erstellen. – Zealseeker