Поэтому мне нужно: загрузить текстовый блокнот в виде файла с помощью $ 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')
}
}
});
});
Это действительно только один пример того, что я пробовал. Я забивал на это несколько часов и не имел большой удачи, возможно, кто-то здесь знает больше о данных многостраничной формы и может пролить свет на подводные камни капель и угловатых.
Хорошо хороший сон ночи и еще час на нем, и у меня есть рабочая загрузка и загрузка:
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, как и я, я объясню, почему серверная часть исправлена здесь