如果通过servelet来读取上传文件路径,则代码如下,我已经在项目中用过了:
DiskFileItemFactory difif = new DiskFileItemFactory()difif.setSizeThreshold(32*1024)difif.setRepository(new File(tmpDir)) //
用以上工厂实例化上传组件ServletFileUpload sfu = new ServletFileUpload(difif)
sfu.setSizeMax(MAX_SIZE)
List fileList = sfu.parseRequest(request)
if ( fileList == null || fileList.size() == 0) { throw new Exception("
导入文件不存在,请检
查")} else { File upLoadFile = null Iterator fileIterator = fileList.iterator()
//得到所有上传的文
件 while (fileIterator.hasNext()) { FileItem fileItem = (FileItem)fileIterator.next() //
取得上传文件
名 if (fileItem.getContentType() == null) { } else {
//
此为路
径 String path = fileItem.getName() String t_ext = path.substring(path.lastIndexOf(".") + 1) //
根据系统时间生成上传后保存的文件
名 String prefix = String.valueOf(System.currentTimeMillis()) //
保存最终的文件完整路径,保存在工程根目录下的Upload目录
下 String u_name = tmpDir + File.separator + prefix + "." + t_ext //
开始保存文
件 upLoadFile = new File(u_name) fileItem.write(upLoadFile) } } }
1.使用请求的方式,src="请求后台路径",后台以输出流的方式返回文件即可
后台代码:
[java] view plain copy
@RequestMapping("/getimgs")
public void getimg(String saveAddress ,HttpServletRequest request, HttpServletResponse response) throws IOException{
try{
FileInputStream hFile = new FileInputStream(saveAddress) // 以byte流的方式打开文件 d:\1.gif
int i=hFile.available() //得到文件大小
byte data[]=new byte[i]
hFile.read(data) //读数据
hFile.close()
response.setContentType("image/*") //设置返回的文件类型
OutputStream toClient=response.getOutputStream() //得到向客户端输出二进制数据的对象
toClient.write(data) //输出数据
toClient.close()
}
catch(IOException e) //错误处理
{
PrintWriter toClient = response.getWriter() //得到向客户端输出文本的对象
response.setContentType("text/htmlcharset=gb2312")
toClient.write("无法打开图片!")
toClient.close()
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)