0

我正在使用以下教程在 Android 中上传文件:

http://reecon.wordpress.com/2010/04/25/uploading-files-to-http-server-using-post-android-sdk/

在服务器端,我使用带有 Apache IOUtils 的 Java servlet 来处理它。

ServletFileUpload fileUpload = new ServletFileUpload();
FileItemIterator fileItemIterator = fileUpload.getItemIterator(request);
while (fileItemIterator.hasNext()) {
  FileItemStream filestream = fileItemIterator.next();
  doStuff(filestream);
}

在浏览器中一切正常,但在 Android 上,我的问题是当我在文件流上调用 getContentType 时,它​​返回 null。为什么这里有差异?我没有处理 getContentType 的空值,因为有些东西告诉我不能为空。

4

1 回答 1

0

我使用 Wireshark 查看浏览器实际发送的内容。在 Content-Disposition 之后(例如,“Content-Type: application/pdf\r\n\r \n"。因此,在文件上传教程中,在以下行之后:

dos.writeBytes("Content-Disposition: form-data;name=\"uploadedfile\";" + "filename=\"" + fileName + "\"" + lineEnd);

我刚刚补充说:

String mimeType = URLConnection.guessContentTypeFromName(file.getName());
dos.writeBytes("Content-Type: " + mimeType + lineEnd);

现在它接缝上传过程工作正常。

当然,对于许多扩展,mimeType 可能会为 null,因此应根据需要对其进行检查。

于 2013-11-06T15:04:21.720 回答