У меня есть html-форма, которая позволяет пользователям загружать файл, который затем использует API преобразования документов IBM Watson для преобразования текста документа в нормализованный текст, который затем вставляется в базу данных.
При тестировании я несколько раз получал следующую ошибку:
{ "код": 415, "ошибка": "Тип носителя [текстовый/обычный] входного документа не поддерживается. Была предпринята попытка автоматического исправления, но автоматически обнаруженный тип носителя [текстовый/обычный] также не поддерживается. Поддерживается Типы носителей: application/msword, application/vnd.openxmlformats-officedocument.wordprocessingml.document, application/pdf, text/html, application/xhtml+xml ». }
Вот моя форма (testform.html):
<form action="testform.php" method="post" enctype="multipart/formdata">
<input type="file" name="newdoc" id="newdoc"> Upload New Doc:
</input>
<button type="submit" name="submit">Submit</button>
</form>
А вот мой php-скрипт (testform.php):
<?php
$filename = $_FILES['newdoc']['name'];
$filetype = $_FILES['newdoc']['type'];
$filesize = $_FILES['newdoc']['size'];
$filetmp = $_FILES['newdoc']['tmp_name'];
// Watson Document Conversion
$dcuser = 'arbitrary_user';
$dcpass = 'arbitrary_pwd';
$userpwd = $dcuser . ":" . $dcpass;
// Initialize cURL
$documentconversion = curl_init();
// Set POST
curl_setopt($documentconversion, CURLOPT_POST, true);
// Set DC API URL
curl_setopt($documentconversion, CURLOPT_URL,
'https://gateway.watsonplatform.net/document-
conversion/api/v1/convert_document?version=2015-12-15');
// Set Username:Password
curl_setopt($documentconversion, CURLOPT_USERPWD, $userpwd);
// Set conversion units, file, and file type
curl_setopt($documentconversion, CURLOPT_POSTFIELDS, array(
'config' => "{\"conversion_target\":\"normalized_text\"}",
'file' => '@' . realpath($filetmp) . ';type=' . $filetype
));
// Set return value
curl_setopt($documentconversion, CURLOPT_RETURNTRANSFER, true);
// Execute and get response
$response = curl_exec($documentconversion);
// Close cURL
curl_close($documentconversion);
?>
Обычно переменная $response будет содержать преобразованный текст, но я не получаю ничего, кроме упомянутых выше ошибок 415, хотя я загружаю только PDF-файлы.
Есть мысли, почему не работает?