2017-08-05 2 views
0

J'ai un problème avec Phoenix. Lorsque je tente d'enregistrer un fichier .png sur le disque, rediriger ne fonctionne pas correctement et je ne peux pas la charge des utilisateurs page d'index après la création d'avatar (générateur avatar fonctionne très bien):Phoenix Framework ne fonctionne pas correctement lorsque je sauvegarde le fichier

File.write("web/static/assets/images/avatars/#{input}.png", image) 

Si je supprime ce tout en ligne est très bien. Une idée de la raison pour laquelle l'enregistrement de fichiers affecte le routage et comment je peux le réparer? Merci.

+1

Que se passe-t-il lorsque vous chargez la "page d'index des utilisateurs" après cela? Avez-vous un message d'erreur? Y at-il une erreur enregistrée sur la console? – Dogbert

+2

Et vous voulez probablement enregistrer l'entrée générée par l'utilisateur dans 'priv/static /'. 'web/static' est généralement utilisé pour les assets qui devraient être traités d'une manière ou d'une autre au moment de la compilation. https://stackoverflow.com/questions/43151504/what-is-the-different-between-web-static-and-priv-static-in-phoenix. – Dogbert

+0

Merci pour les réponses. J'utilise un générateur identicon écrit en Elixir qui crée un png basé sur l'adresse email des utilisateurs, donc en cours d'exécution. Je pourrais enregistrer des fichiers dans le dossier 'web/static' et ensuite j'ai des problèmes avec la redirection (retour à la page de connexion sans erreur - statut 302) mais je ne peux pas le faire pour' priv/static' - seuls les fichiers ne sont pas générés erreur msg. Je peux également générer des fichiers dans n'importe quel dossier personnalisé dans le répertoire racine sans aucune erreur mais comment l'accéder à partir de modèles? Plug.Static ne fonctionne pas correctement, mais peut-être que je me trompe? 'plug Plug.Static, à:"/avatars ", à partir de:" files/"' – LeoShihPsu

Répondre

0

Je suggère d'éviter de modifier les deux dossiers lors de l'exécution. Ceux-ci doivent être mis à jour lorsque vous déployez votre application. Utilisez plutôt un dossier personnalisé (créez une config pour cela), puis créez un gestionnaire qui devrait diffuser le fichier dans le navigateur ou utiliser nginx/apache et mapper ce dossier comme dossier de contenu statique afin que votre application ne consomme pas de gros fichiers. N'utilisez pas le module Static Assets car il ne connaît que les dossiers web et priv. Au lieu de cela, créez le vôtre qui devrait résoudre les chemins relatifs/absolus. Que se passe-t-il exactement lorsque la redirection "ne fonctionne pas correctement"?

+0

Cela fonctionne. J'ai créé un dossier séparé et avec une configuration correcte, sans toucher à la statique tout va bien. Merci pour l'aide! – LeoShihPsu