即使我摄取PDF,IBM Watson Document Conversion也会回复415错误?

时间:2017-06-15 16:14:04

标签: php html curl document-conversion

我有一个html表单,允许用户上传文件,然后使用IBM Watson的文档转换API将文档文本转换为标准化文本,然后将其插入数据库。

经过测试,我多次收到以下错误:

{" code" :415,"错误" :"不支持输入文档的媒体类型[text / plain]。尝试自动更正,但也不支持自动检测到的媒体类型[text / plain]。支持的媒体类型有: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变量会包含已转换的文本,但即使我只上传PDF,我也只得到上面提到的415错误。

有关它为什么不起作用的任何想法?

1 个答案:

答案 0 :(得分:0)

从错误中可以看出,您的PHP脚本正在传递text/plain文件类型,该服务不支持该文件类型。相反,请尝试传入application/pdf作为文件类型。

您还可以尝试使用简单的curl命令运行请求:

  

curl -X POST -u“YOUR_USERNAME”:“YOUR_PASSWORD”-F   config =“{\”conversion_target \“:\”normalized_text \“}” - F   “file=@sample.pdf;类型=应用/ PDF”   “https://gateway.watsonplatform.net/document-conversion/api/v1/convert_document?version=2015-12-15

正如您在API reference中所见,支持的类型是: text/htmltext/xhtml+xmlapplication/pdfapplication/mswordapplication/vnd.openxmlformats-officedocument.wordprocessingml.document