Как отправить файл из html-селектора в gisang apis? - PullRequest
0 голосов
/ 04 декабря 2018

У меня есть HTML-селектор файлов в моем HTML-коде.Я выбираю изображение из этого селектора и отправляю его в код golang через jquery.Но файл изображения не будет получать по коду golang.Я показываю мой код HTML и Голанг.

HTML: -

<input type="file" name="myFile" id="imageSelector"><br><br>
<button id="uploadImage">Upload Image</button>

jquery: -

$( document ).ready(function() {
    var inputFile = $('#imageSelector').val().split('\\').pop(); // give you file name
    $("#uploadImage").on("click", function(e){
        $.ajax({
            url: "/api/v1/upload",
            type: "POST",
            contentType: false,
            processData: false,
            data:{"file":inputFile},
            success: function(response){
                console.log(response);
            }
        });
    });
});

В коде Голанг я получаю его с помощьюпакет джина

func GetSelectedImage(c *gin.Context){
  file, err := c.FormFile("file")
  fmt.Pritnln(file) //it will show nothing
  fmt.Println(err) // request Content-Type isn't multipart/form-data
} 

Ошибка: -

запрос Content-Type не multipart / form-data

Где находится ошибка I 'я делаю.Я не могу изменить свой код golang, но html-код доступен для редактирования.Кто-нибудь может сказать мне, что я делаю неправильно?

1 Ответ

0 голосов
/ 04 декабря 2018

Вы передаете data простой объект и говорите jQuery не обрабатывать его.

Это означает, что он просто преобразуется в строку [object Object], а jQuery устанавливает тип содержимого на text/plain;charset=UTF-8.

Так что это не multipart / form-data, и он не претендует на то, чтобы быть.


Передайте FormData объект и передайте ему файл , а не просто имя файла.

const data = new FormData();
data.append("file", $("#imageSelector")[0].files[0], inputFile);
// ...
contentType: false,
processData: false,
data: data,
...