[英]Upload a file using Restlet multipart/form-data in java
[英]Parsing multipart/form-data using Apache Commons File Upload
Apache Commons File Upload包是否提供通用接口來通過InputStream
流式解析multipart/form-data
塊,附加Array<Byte>
,還是通過任何其他通用流接口?
我知道他們有一個流API,但這個例子只告訴你如何通過ServletFileUpload
來做到這ServletFileUpload
,我認為必須特定於Servlet
。
如果沒有,JVM中是否有任何其他替代框架可以讓您完成此操作? 可悲的是,我使用的框架Spray.io似乎沒有提供這樣做的方法。
bayou.io有一個通用的MultipartParser
您可能需要一些適配器才能使用它,因為它有自己的Async和ByteSource接口。
以下示例顯示如何與InputStream
同步使用解析器
String msg = ""
//+ "preamble\r\n"
+"--boundary\r\n"
+"Head1: Value1\r\n"
+"Head2: Value2\r\n"
+"\r\n"
+"body.body.body.body."
+"\r\n--boundary\r\n"
+"Head1: Value1\r\n"
+"Head2: Value2\r\n"
+"\r\n"
+"body.body.body.body."
+"\r\n--boundary--"
+ "epilogue";
InputStream is = new ByteArrayInputStream(msg.getBytes("ISO-8859-1"));
ByteSource byteSource = new InputStream2ByteSource(is, 1024);
MultipartParser parser = new MultipartParser(byteSource, "boundary");
while(true)
{
try
{
MultipartPart part = parser.getNextPart().sync(); // async -> sync
System.out.println("== part ==");
System.out.println(part.headers());
ByteSource body = part.body();
InputStream stream = new ByteSource2InputStream(body, Duration.ofSeconds(1));
drain(stream);
}
catch (End end) // control exception from getNextPart()
{
System.out.println("== end of parts ==");
break;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.