2017-01-28 3 views
1

Mon application utilise l'extrait de code html pour le formulaire pour télécharger un fichiernom passe du fichier sélectionné pour le téléchargement en utilisant enctype = « multipart/form-data » à un champ struct dans golang

<form method="POST" action="/addproduct" enctype="multipart/form-data"> 
     <label class="form-control-label" for="productimage"></label> 
     {{with .Errors.image}} 
     <div class="alert alert-danger"> 
      {{.}} 
     </div> 
     {{end}}  

     <input type="file" name="productimage" id = "productimage" multiple="multiple" class = "btn btn-danger"> 

     <input type="submit" name="submit" value="Submit" class = "btn btn-info"> 
    </form> 

J'ai besoin saisir le nom de fichier du fichier téléchargé et le transmettre à un champ struct de Golang. J'essaie de transmettre le nom du fichier sélectionné pour uploadé dans le champ 'image' de la structure 'Produit'. Des suggestions sur la façon dont cela peut être fait?

+0

c'est ce que vous faites avec votre code. – tkausl

+0

si j'obtiens l'adresse mémoire invalide ou l'erreur de déréférencement du pointeur nul si – user3809560

+0

La valeur du nom de fichier (pimage) est imprimée correctement sur le terminal. Cependant, j'ai l'erreur. Lorsque j'affecte directement une valeur de chaîne au champ struct (image), il n'y a pas d'erreur. J'ai essayé de convertir le nom de fichier en chaîne, mais cela ne fonctionne pas non plus. – user3809560

Répondre

0

Au lieu d'appeler r.FormFile(), vous pouvez plutôt essayer:

mpr, _ := r.MultipartReader() 
filePart, _ := r.NextPart() 
fileName := filePart.FileName() 

Cependant, je voudrais vérifier les erreurs :)

+0

J'utilise le paquet govalidator pour valider les champs struct. Les noms de fichiers avec des extensions échoueraient à la validation des balises de validation alpha et alphanum et par la suite l'erreur serait générée. J'ai fait quelques changements pour échapper à ces contrôles de validation et le code fonctionne. – user3809560