【发布时间】:2014-05-26 09:31:47
【问题描述】:
我在这里要做的是用户上传他的文件,我会将这个文件存储到我的服务器端
重要提示:我只能使用“servlet-api.jar(2.4 版本)”,不能使用其他 JAR!
我使用<form action=\"/Mapreduce/upload\" method=\"POST\" enctype=\"multipart/form-data\"> 上传我的文件。
然后我使用此代码InputStream whole = request.getInputStream(); 来获取整个输入流。
然后我用这段代码获取文件内容的字符串
BufferedReader br = new BufferedReader(new InputStreamReader(whole, "UTF-8"));
while ((line = br.readLine()) != null) {
sb.append(line);// sb is stringbuilder here
}
然后,我将从 stringbuilder 获得的字符串转换为 InputStream:
InputStream is = new ByteArrayInputStream(result.getBytes("UTF-8""));
最后,我使用以下代码将此InputStream is 写入另一个文件(temp):
OutputStream outputStream = new FileOutputStream(temp);// temp is a file.
int read = 0;
byte[] bytes = new byte[1024];
while ((read = is.read(bytes)) != -1) {
outputStream.write(bytes, 0, read);
}
当我上传 .txt 文件时,它可以工作并且我可以打开 temp.txt。但是,当我上传 .docx 文件时,我无法打开 temp.docx。我怎么解决这个问题?是不是我的编码不对?
【问题讨论】:
-
你用的是servlet上传文件还是Webservice上传文件。为什么即使您使用多部分也需要对文件进行编码。您可以直接上传文件而无需编码
-
@Raju Sharma,它是 servlet 上传文件。实际上,我在这里要做的是用户上传他的文件,我会将这个文件存储到我的服务器端
标签: java file-upload io inputstream multipartform-data