2017-02-04 3 views
0

Что мне нужно сделать: у меня есть веб-страница, которая использует веб-камеру для захвата фотографии. Когда вы нажимаете кнопку, это сохраняет текущее изображение веб-камеры в HTML-холсте. Когда я получаю изображение из объекта canvas, он выводится как закодированная в Base64 строка, например.Загрузка изображения (строка base64) в Web API в качестве filestream

данные: изображение/PNG; base64, iVBORw0KGgoAAAANSUhEUgAAAJYAAABwCAYAAAD8HIl9AAAgAElEQVR4Xky9B7hld3Hl ...

На другом конце сервис Web API используется для сохранения фотографии на сервер. Он написан на C# и ожидает FileStream.

Мой передний конец написан с использованием только HTML и Javascript (включая Angular/JQuery). Мне нужно отправить изображение на сервер в ожидаемом формате.

Я бил головой о стену в течение двух дней. Кажется, что мне нужно сделать, это создать объект FormData, добавить изображение к нему и отправить его. Но это дает мне 200 ошибок. Что-то не сформировано правильно.

Хотя я использую элемент ввода типа файла и загружаю файл с диска, этот код работает отлично. Когда, когда я передаю ему строку изображения base64, она терпит неудачу. Когда я добавляю строку изображения к объекту FormData, она терпит неудачу.

factory.setPhoto = function (id, image) { 
    var fd = new FormData(); 
    fd.append('file', image); 
    return $http.post(baseUrl + '/' + id, fd, { 
     transformRequest: angular.identity, 
     headers: { 'Content-Type': undefined } 
    }).then(function (results) { 
     // whatever 
    }); 
}; 

ответ

1

Вы должны преобразовать компонент данных base64 в необработанные двоичные данные, а затем передать его через formdata. Попробуйте одно из решений в этом сообщении.

https://stackoverflow.com/a/5100158/1980415

Смежные вопросы