загрузка текстового блоба в виде файла с использованием $ http или $ ресурса с помощью angular.js - имитация скручивания multipart / form upload

0

Поэтому мне нужно: загрузить текстовый блокнот в виде файла с помощью $ http или $ resource с помощью angular.js - имитируя мультипликацию/форматирование фигур в виде скручивания.

Есть предыдущий пост по этой проблеме, я собираюсь попытаться быть более явным в этой проблеме, надеясь, что кто-то сможет определить, где я могу сбиться с пути.

Вот пример команды curl, которую я знаю, работает с этой службой:

curl \
http://c.docverter.com/convert \
-F from=markdown \
-F to=pdf \
-F input_files[]=@<(echo hello) #or @example.md for a file

предыдущая статья по этой проблеме

пример успешного ответа журнала от синатра

{"input_files"=>[{:filename=>"api.md", :type=>"text/markdown", :name=>"input_files[]", :tempfile=>#<Tempfile:/tmp/RackMultipart20160426-3-5tb8po>, :head=>"Content-Disposition: form-data; name=\"input_files[]\"; filename=\"api.md\"\r\nContent-Type: text/markdown\r\n"}], "from"=>"markdown", "to"=>"pdf"}

О том, что мне нужно сделать

Мне нужно загрузить текст уценки (я предполагаю, что использую blob) как "файл". Я пробовал как $ resource, так и $ http с дюжиной различных конфигураций и не повезло.

Типичный жалкий ответ журнала после моей сотой угловой попытки:

{"from"=>"markdown", "input_files"=>["{}"], "to"=>"pdf"}

пример кода:

angular.module('app')
  .factory('convert', function ($resource) {
    return $resource('http://c.docverter.com/convert', null, {
    pdf: {
      method: 'POST',
      headers: { 'Content-Type': 'multipart/form-data' },
      params: {
        from: 'markdown',
        to: 'pdf',
        'input_files[]': new Blob(['##title'], 'text/markdown')
      }
    }
  });
});

Это действительно только один пример того, что я пробовал. Я забивал на это несколько часов и не имел большой удачи, возможно, кто-то здесь знает больше о данных многостраничной формы и может пролить свет на подводные камни капель и угловатых.

Теги:
http
multipartform-data
blob

1 ответ

0
Лучший ответ

Хорошо хороший сон ночи и еще час на нем, и у меня есть рабочая загрузка и загрузка:

var fd = new FormData();
var blob = new Blob([$scope.markdown], {type: 'text/markdown'});
var file = new File([blob], "abc.md");
fd.append('input_files[]', file);
fd.append('from', 'markdown');
fd.append('to', 'pdf');

$http.post('https://mydocverterserver.com/convert', fd, {
    transformRequest: angular.identity,
    headers: {'Content-Type': undefined},
    responseType: 'arraybuffer'
})
.success(function(response){
  var b = new Blob([response], { type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' });
  FileSaver.saveAs(b, 'abc.docx');
})
.error(function(res){
  console.log(res);
});

Еще немного грубо - я, вероятно, починю его и перевезу на завод, но он работает.

Это docx, но он работает и для уценки и pdf.

Бит FileSaver поступает из: угловой файловой заставки

Если вы ищете конкретное решение для docverter, как и я, я объясню, почему серверная часть исправлена здесь

Ещё вопросы

Сообщество Overcoder
Наверх
Меню