簡體   English   中英

Android將servlet圖像上傳保存在服務器上

[英]Android to servlet image upload to be saved on server

我創建了一個servlet,它接受來自我的android app的圖像。我在servlet上接收字節,但是,我希望能夠在服務器上保存帶有原始名稱的圖像。 我怎么做。 我不想使用apache commons。 還有其他解決方案對我有用嗎?

謝謝

在Android的內置HttpClient APIMultipartEntity類的幫助下,將其作為multipart / form-data請求發送。

HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost("http://example.com/uploadservlet");
MultipartEntity entity = new MultipartEntity();
entity.addPart("fieldname", new InputStreamBody(fileContent, fileContentType, fileName));
httpPost.setEntity(entity);
HttpResponse servletResponse = httpClient.execute(httpPost);

然后在servlet的doPost()方法中,使用Apache Commons FileUpload來提取部件。

try {
    List<FileItem> items = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request);
    for (FileItem item : items) {
        if (item.getFieldName().equals("fieldname")) {
            String fileName = FilenameUtils.getName(item.getName());
            String fileContentType = item.getContentType();
            InputStream fileContent = item.getInputStream();
            // ... (do your job here)
        }
    }
} catch (FileUploadException e) {
    throw new ServletException("Cannot parse multipart request.", e);
}

我不想使用apache commons

除非您使用支持multipart/form-data請求的Servlet 3.0,否則需要使用HttpServletRequest#getParts() ,您需要根據RFC2388自行重新發明multipart / form-data解析器。 它只能長期咬你。 硬。 我真的沒有看到你為什么不使用它的任何理由。 這是無知嗎? 這至少不是那么難。 只需在/WEB-INF/lib文件夾中刪除commons-fileupload.jarcommons-io.jar ,然后使用上面的示例。 而已。 你可以在這里找到另一個例子。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM