【问题标题】:Sending a file with XMLHttpRequest() to Tika server将带有 XMLHttpRequest() 的文件发送到 Tika 服务器
【发布时间】:2016-07-11 06:51:09
【问题描述】:

我正在尝试将用于内容提取的 PDF 发送到 Tika 服务器,但总是收到错误:“无法使用源编码从流中转换文本”

这是 Tika 期望文件的方式:

“所有获取文件的服务都使用HTTP“PUT”请求。当使用“PUT”时,原始文件必须在请求正文中发送,无需任何额外编码(不要使用multipart/form-data或其他容器)。” 来源https://wiki.apache.org/tika/TikaJAXRS#Services

使用 XMLHttpRequest() 发送文件的正确方法是什么?

代码:

var response, error, file, blob, xhr;

file = new File("/PROJECT/web/dateien/ai/pdf.pdf");

blob = file.toBuffer().toBlob("application/pdf");
url = "http://localhost:9998/tika";

// send data
try {
    xhr = new XMLHttpRequest();
    xhr.open("PUT", url);
    xhr.setRequestHeader("Accept", "text/plain");
    xhr.send(blob);
} catch (e) {
    error = e;
}

({
    response: xhr.responseText,
    status: xhr.statusText,
    error: error,
    type: xhr.responseType,
    blob: blob
});

错误:

【问题讨论】:

    标签: xmlhttprequest wakanda


    【解决方案1】:

    我怀疑当 XHR 正文中有 blob 时,Wakanda 会将 PUT 请求转换为 POST 请求。你能wireshark你的XHR请求并添加细节吗?如果是这样,您可能可以在 wakanda (https://github.com/Wakanda/wakanda-issues/issues) 中填写问题

    希望对你有帮助, 亚恩

    【讨论】:

    • 看起来你是对的...... Wakanda 正在执行 POST 请求而不是 PUT (POST /tika HTTP/1.1)。我会提出问题。
    猜你喜欢
    • 1970-01-01
    • 2015-05-16
    • 2020-05-07
    • 1970-01-01
    • 2014-02-15
    • 2012-06-13
    • 1970-01-01
    • 2014-01-31
    • 2021-12-05
    相关资源
    最近更新 更多