我有一个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错误。
有关它为什么不起作用的任何想法?
答案 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/html
,text/xhtml+xml
,application/pdf
,application/msword
和application/vnd.openxmlformats-officedocument.wordprocessingml.document
。