webkitdirectory
재귀 디렉토리 업로드 주위를 재생하고
: 서버 측에서
<form action="http://localhost:8080/upload" method="post" enctype="multipart/form-data">
<input type="file" name="file_input" webkitdirectory="" directory="">
<input type="submit">
</form>
나는 아파치 - 평민 - 파일 업로드 1.3.1 (Streaming API)로 처리
@WebServlet(urlPatterns = "/upload")
public class DirUploadServlet extends HttpServlet
{
@Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
ServletFileUpload upload = new ServletFileUpload();
response.setContentType(MediaType.TEXT_PLAIN);
PrintWriter writer = response.getWriter();
try
{
FileItemIterator iter = upload.getItemIterator(request);
while (iter.hasNext())
{
FileItemStream item = iter.next();
if (!item.isFormField())
{
writer.println(item.getName());
}
}
}
catch (FileUploadException e)
{
throw new IOException(e);
}
}
}
하위 디렉토리가없는 디렉토리에 적합합니다. 나는 서브 디렉토리를 포함하는 디렉토리를 선택하려고하면 그러나, 요청은 그러나 서버 측에서 제대로 전송 나는 다음과 같은 예외가 얻을 :
이org.apache.commons.fileupload.MultipartStream$MalformedStreamException: Stream ended unexpectedly
at org.apache.commons.fileupload.MultipartStream$ItemInputStream.makeAvailable(MultipartStream.java:1005)
at org.apache.commons.fileupload.MultipartStream$ItemInputStream.close(MultipartStream.java:943)
at org.apache.commons.fileupload.MultipartStream$ItemInputStream.close(MultipartStream.java:922)
at org.apache.commons.fileupload.FileUploadBase$FileItemIteratorImpl$FileItemStreamImpl.close(FileUploadBase.java:866)
at org.apache.commons.fileupload.FileUploadBase$FileItemIteratorImpl.findNextItem(FileUploadBase.java:1017)
at org.apache.commons.fileupload.FileUploadBase$FileItemIteratorImpl.hasNext(FileUploadBase.java:1106)
at DirUploadServlet.doPost(DirUploadServlet.java:45)
(우분투 크롬에서) 요청이 나를 위해 합법적 인 것 같다을 :
------WebKitFormBoundaryMQ53uSzX0G6oZpWL
Content-Disposition: form-data; name="file_input"; filename="probadir/dir2/."
Content-Type: application/octet-stream
------WebKitFormBoundaryMQ53uSzX0G6oZpWL
Content-Disposition: form-data; name="file_input"; filename="probadir/file1"
Content-Type: application/octet-stream
------WebKitFormBoundaryMQ53uSzX0G6oZpWL
Content-Disposition: form-data; name="file_input"; filename="probadir/dir2/file2"
Content-Type: application/octet-stream
------WebKitFormBoundaryMQ53uSzX0G6oZpWL--
오류는 Windows의 Google 크롬과 동일합니다. IE와 Firefox에는 아직이 기능이 없습니다.