J'ai reçu la même question que Modify image obtained from loopback-component-storage mais la réponse ne me satisfait pas.Valider et renommer le fichier image de loopback-component-storage
Utilisez le même exemple:
A côté client
Upload.upload(
{
url: '/api/containers/container_name/upload',
file: file,
fileName: "demoImage.jpg",
//Additional data with file
params:{
username : username
}
});
Voici l'exigence:
- Valider le type de fichier du fichier
- Modifier la nom enregistré dans le serveur
- Rejeter si le fichier non valide ou nom d'utilisateur
Voici une référence que je et rencontrais:
Le nom d'utilisateur est nécessaire, il devrait donc être la méthode d'un utilisateur. J'ai ajouté une méthode à distance comme dans https://stackoverflow.com/a/31118294/5241407 et j'ai changé l'API en/api/usermodel /: id/upload. Certains codes ont été ajoutés dans remoteMethod pour envoyer le nom d'utilisateur à la fonction
container.upload
. Est-il possible que nous validions le type de fichier et changions le nom du fichier dans cette phase afin que je puisse retourner l'erreur si elle est invalide?J'ai utilisé configure-storage.js dans le fichier de démarrage tel qu'il est dans https://stackoverflow.com/a/31059880/5241407 Mais cette solution est inadéquate. Si le client envoie un type de fichier invalide, le serveur lancera une erreur, ce qui n'est pas attendu. Il est préférable de rejeter la requête avec une réponse d'erreur au lieu de lancer une erreur système. Alors, comment retourner une erreur sans lancer une erreur au niveau du système?
Une fois que j'ai téléchargé un fichier png et vérifié le fichier file.type dans configure-storage.js, seulement pour trouver que le type de fichier est application/octet-stream au lieu de image/png. C'est le code que j'ai utilisé pour tester:
curl -X POST --header "Content-Type: multipart/form-data" --header "Accept: application/json" "HOST/api/usermodel/userId/upload" -F "[email protected]"
Ce résultat inattendu peut gêner le jugement du type de fichier.
Oui, méthode à distance que vous pouvez personnaliser. Les types de contenu devraient être bien je crois. – anoop
Merci. Mais allowedContentTypes ne peut toujours pas résoudre le problème 'application/octet-stream'. Je trouve la raison pour laquelle le type MINI devrait être défini lors de l'envoi de fichier. BTW la méthode de beforeRemote devrait être télécharger au lieu de créer. – Zealseeker