Servlets 下载文件Servlet-文件内容包含二进制文件
我曾尝试开发一个servlet,允许用户下载文件,但它允许用户下载文件,但文件内容包含二进制垃圾,不可读。我可以知道原因吗 代码 它与以二进制或文本模式或浏览器设置写入文件有关 请帮忙Servlets 下载文件Servlet-文件内容包含二进制文件,servlets,download,Servlets,Download,我曾尝试开发一个servlet,允许用户下载文件,但它允许用户下载文件,但文件内容包含二进制垃圾,不可读。我可以知道原因吗 代码 它与以二进制或文本模式或浏览器设置写入文件有关 请帮忙 谢谢 问题不在目前给出的代码中。您正确地使用了输入流/输出流而不是读卡器/编写器来流式处理文件 问题的原因很可能是您创建/保存文件的方式。当您使用读卡器和/或写卡器时,此问题会显现出来,该读卡器未被指示对正在读/写的字符使用正确的字符编码。也许你正在创建一个上传/下载服务,而错误就在上传过程本身 假设数据为UTF
谢谢 问题不在目前给出的代码中。您正确地使用了
输入流
/输出流
而不是读卡器
/编写器
来流式处理文件
问题的原因很可能是您创建/保存文件的方式。当您使用读卡器
和/或写卡器
时,此问题会显现出来,该读卡器未被指示对正在读/写的字符使用正确的字符编码。也许你正在创建一个上传/下载服务,而错误就在上传过程本身
假设数据为UTF-8格式,您应该按如下方式创建读卡器:
Reader reader = new InputStreamReader(new FileInputStream(file), "UTF-8"));
Writer writer = new OutputStreamWriter(new FileOutputStream(file), "UTF-8"));
作者如下:
Reader reader = new InputStreamReader(new FileInputStream(file), "UTF-8"));
Writer writer = new OutputStreamWriter(new FileOutputStream(file), "UTF-8"));
但是,如果您实际上不需要按每个字符操作流,而只是想不经修改地传输数据,那么您实际上应该一直使用InputStream
/OutputStream
另见: