文件上载,可解决上载时各种错误及乱码,空格变+号(1)
文件下载,可解决下载时各种异常及乱码,空格变+号(1)
本来想写一个关于解决struts做视频上传下载时,各种问题异常的解决方案,但是上传要写的太多了,懒呀,这里只写了个下载的例子及说明(以后有时间了再写上传视频的)。
先罗列一下上传及下载的常见问题吧:
上传:
一.上传
1。如何统计上传文件多大及已经上传多少(统计客户端向临时文件写的大小而不是文件服务器)?
2。如果上传文件大于struts2最大要求,如何给用户一个快速国际化的提示信息而不是等半天才提示
3。当用户点击取消按钮时,如何停止上传动作(用户点击取消的一瞬间,服务器端有可能正向文件服务器写入上传的文件,也有可能文件上传已经完成,正调用外部应用程序进行视频格式的转换或获取视频的截图【关键是这第二个可能,就是点击取消按钮的同时将外部程序这个子进程也杀掉】)
二.下载
1。用户取消问题
2。乱码,特殊符号问题及空格变加号
引用
本来想写一个关于解决struts做视频上传下载时,各种问题异常的解决方案,但是上传要写的太多了,懒呀,这里只写了个下载的例子及说明(以后有时间了再写上传视频的)。
先罗列一下上传及下载的常见问题吧:
上传:
一.上传
1。如何统计上传文件多大及已经上传多少(统计客户端向临时文件写的大小而不是文件服务器)?
2。如果上传文件大于struts2最大要求,如何给用户一个快速国际化的提示信息而不是等半天才提示
3。当用户点击取消按钮时,如何停止上传动作(用户点击取消的一瞬间,服务器端有可能正向文件服务器写入上传的文件,也有可能文件上传已经完成,正调用外部应用程序进行视频格式的转换或获取视频的截图【关键是这第二个可能,就是点击取消按钮的同时将外部程序这个子进程也杀掉】)
二.下载
1。用户取消问题
2。乱码,特殊符号问题及空格变加号
import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.util.Properties; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.codec.binary.Base64; import org.apache.commons.lang.xwork.StringUtils; public class DownloadFileUtils { //文件存放的目录 public static String saveFileURL; /** * 根据上传文件获取其真实读取路径 * @param response * @param downloadRealName * 服务器端文件的实际名字 * @param fileSource * 服务器端存放文件的目录 * @param fileSrcName * 存放文件的文件夹 * @param fileName * 下载后文件的名字 * @return * @throws IOException */ public static String downloadFile(HttpServletRequest request,HttpServletResponse response, String downloadRealName, String fileSrcName, String fileName) { InputStream fis = null; OutputStream toClient = null; try { String path = saveFileURL + "\\"+fileSrcName + "\\"+downloadRealName+fileName.substring(fileName.lastIndexOf("."), fileName.length()); System.out.println("downloadPath----->" + path); File file = new File(path); if (!file.exists()) { return null; }