Apache Camel Restlet-无法提取多部分数据

时间:2019-03-16 07:36:11

标签: java apache-camel multipartform-data restlet

我必须使用Apache Camel(2.12.4)Restlet从浏览器和进程接收文件上传。由于我的解决方案无法正常工作,为简化起见,此刻我使路由定义非常简单

from("restlet:/upload?restletMethod=POST")
.to("file:///<path.to.dir>//?fileName=<dump-file.http>");

使用邮递员,我正在上传一个简单的Java类文件和表单值,目标是将它们都检索回来。我希望能够将类文件写回到文件中并执行以证明创建成功。

为此,我编写了一个简单的实用工具,它使用org.apache.commons.fileupload.MultipartStream读取转储文件;现在是打印标题和正文。

public class MultipartDataExtractor {

    public static final String DELIMITER = "\\r?\\n";

    public static void main(String[] args) throws Exception {
        byte[] boundary = "----------------------------002984755777142240671505".getBytes(); // copying from dump file
        FileInputStream fis = new FileInputStream(new File("<path.to.dir>/<dump-file.http>"));
        parseMultipartStream(fis, boundary);
    }

    public static void parseMultipartStream(InputStream is, byte[] boundary) throws Exception {
        MultipartStream multipartStream = new MultipartStream(is, boundary, 1024 * 4, null);
        System.out.println("Trying to read multipart data");
        boolean nextPart = multipartStream.skipPreamble();
        while (nextPart) {
            String headers = multipartStream.readHeaders();
            System.out.println(String.format("headers: [%s]", headers));
            multipartStream.readBodyData(System.out);
            System.out.println("");
            nextPart = multipartStream.readBoundary();
        }
    }
}

我在从servlet提取内容的文件上成功使用了此工具。在骆驼转储的文件上,它运行,但是即使通过可见的内容看起来也无法解析。 multipartStream.skipPreamble()返回false,在调试时,我发现在内部它抛出MalformedException,并从catch块返回false。转储的文件看起来像这样

----------------------------002984755777142240671505
Content-Disposition: form-data; name="file"; filename="HelloWorld.class"
Content-Type: application/java-vm

����4

<init>()VCodeLineNumberTablemain([Ljava/lang/String;)V
SourceFileHelloWorld.javaHello World
HelloWorldjava/lang/Objectjava/lang/SystemoutLjava/io/PrintStream;java/io/PrintStreamprintln(Ljava/lang/String;)V   *��
        %   ���



----------------------------002984755777142240671505
Content-Disposition: form-data; name="name"

Hans Muster
----------------------------002984755777142240671505--

我不确定出了什么问题。任何指针或帮助将不胜感激。

0 个答案:

没有答案