2017-01-28 11 views
1

Мое приложение использует HTML фрагмент кода для формы, чтобы загрузить файлPass имя файла, выбранного для загрузки с помощью ENCTYPE = «многослойную/форм-данных» в поле структуры в 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> 

Мне нужно, для захвата имени файла загруженного файла и передачи его в поле структуры в Голанге.

file, header, err := r.FormFile("productimage") 
    defer file.Close() 
    if err != nil { 
     http.Error(w, err.Error(), http.StatusInternalServerError) 
    } 
    var pimage = header.Filename 

p := &Product{ 
    Puid:  Puid(), 
    Pname: r.FormValue("productName"), 
    Quantity: r.FormValue("quantity"), 
    Price: r.FormValue("price"), 
    Image: pimage, 
} 

Я пытаюсь передать имя файла, выбранного для загрузки в поле «изображение» структуры «Продукт». Любые предложения о том, как это можно сделать?

+0

То, что вы делаете с вашим кодом. – tkausl

+0

Я получаю неверный адрес памяти или ошибку разворота указателя nil, хотя – user3809560

+0

Значение имени файла (pimage) правильно распечатывается на терминале. Однако я получаю ошибку. Когда я напрямую назначаю строковое значение в поле структуры (изображение), ошибок нет. Попробовали преобразовать имя файла в строку, но это тоже не работает. – user3809560

ответ

0

Вместо вызова r.FormFile(), вы могли бы вместо того, чтобы попробовать:

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

Однако, я хотел бы проверить ошибки :)

+0

Я использую пакет govalidator для проверки полей структуры. Имена файлов с расширениями не подтверждают валидацию тегов валидатора альфа и алфавита, а затем генерируется ошибка. Я сделал некоторые изменения, чтобы избежать этих проверок проверки, и код работает. – user3809560