struts实现的图片的上传和下载

 这是struts实现的图片的上传和下载的关键代码:

Java code
   
   
public class FileAction extends DispatchAction { private JDBConnection connection = new JDBConnection(); // 以下方法实现文件的上传 public ActionForward upLoadFile(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { Date date = new Date(); FileActionForm fileActionForm = (FileActionForm) form; FormFile file = fileActionForm.getFile(); // 获取当前的文件 String dir = servlet.getServletContext().getRealPath( " /image " ); String path = upload(dir, file); // 实现文件的上传的功能,并且返回上传服务器的路径 path = " image/ " + path; String fileName = Chinese.toChinese(fileActionForm.getFileName()); // 获取文件的名称 String fileSize = String.valueOf(file.getFileSize()); String fileDate = DateFormat.getDateInstance().format(date); String sql = " insert into tb_file values(' " + fileName + " ',' " + fileSize + " ',' " + fileDate + " ',' " + path + " ') " ; connection.executeUpdate(sql); connection.closeConnection(); return mapping.findForward( " upLoadFileResult " ); } public String upload(String dir, FormFile formFile) throws Exception { Date date = new Date(); // 取欲上传的文件的名字和长度 String fname = formFile.getFileName(); // 将上传时间加入文件名 int i = fname.indexOf( " . " ); String name = String.valueOf(date.getTime()); String type = fname.substring(i + 1 ); fname = name + " . " + type; InputStream streamIn = formFile.getInputStream(); // 创建读取用户上传文件的对象 File uploadFile = new File(dir); // 创建把上传数据写到目标文件的对象 if ( ! uploadFile.exists() || uploadFile == null ) { // 判断指定路径是否存在,不存在则创建路径 uploadFile.mkdirs(); } String path = uploadFile.getPath() + " / " + fname; OutputStream streamOut = new FileOutputStream(path); int bytesRead = 0 ; byte [] buffer = new byte [ 8192 ]; while ((bytesRead = streamIn.read(buffer, 0 , 8192 )) != - 1 ) { streamOut.write(buffer, 0 , bytesRead); } streamOut.close(); streamIn.close(); formFile.destroy(); return fname; } // 实现文件的下载 public ActionForward downFile(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { String path = request.getParameter( " path " ); BufferedInputStream bis = null ; BufferedOutputStream bos = null ; OutputStream fos = null ; InputStream fis = null ; String filepath = servlet.getServletContext().getRealPath( " / " + path); File uploadFile = new File(filepath); fis = new FileInputStream(uploadFile); bis = new BufferedInputStream(fis); fos = response.getOutputStream(); bos = new BufferedOutputStream(fos); response.setHeader( " Content-disposition " , " attachment;filename= " + URLEncoder.encode(path, " utf-8 " )); int bytesRead = 0 ; byte [] buffer = new byte [ 8192 ]; while ((bytesRead = bis.read(buffer, 0 , 8192 )) != - 1 ) { bos.write(buffer, 0 , bytesRead); } bos.flush(); fis.close(); bis.close(); fos.close(); bos.close(); return null ; } }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值