import org.apache.struts2.ServletActionContext;
static boolean isWindows = false; private String uploadDir; private File uploadify; //上传文件file对象private String uploadifyFileName; //上传文件名private String load; /** return true---是Windows操作系统 */public static boolean isWindowsOS() { boolean isWindowsOS = false; String osName = System.getProperty("os.name"); if (osName.toLowerCase().indexOf("windows") > -1) { isWindowsOS = true; } return isWindowsOS; } //上传文件public String upload(){ String newFileName=null; //得到当前时间开始流逝的毫秒数,将这个毫秒数作为上传文件新的文件名 long now=new Date().getTime(); //得到保存上传文件的真实路径 isWindows = isWindowsOS(); // 判断是否是windows系统 String path=""; if (isWindows) {// windows uploadDir = "/upload/contrast"; path=ServletActionContext.getServletContext().getRealPath(uploadDir); } else {// linux uploadDir = "/data/upload/contrast"; path = uploadDir; } File dir=new File(path); if (!dir.exists()) { //如果这个目录不存在,则创建它 dir.mkdirs(); } int index=uploadifyFileName.lastIndexOf("."); //判断上传文件是否有扩展名,以时间戳作为新的文件名 if (index!=-1) { newFileName=now+uploadifyFileName.substring(index); load=uploadDir+"/"+newFileName; }else { newFileName=Long.toString(now); } BufferedOutputStream bos=null; BufferedInputStream bis=null; //读取保存在临时目录下的上传文件,写入到新的文件中 try { //File f = new File("C:/java/hello"); //InputStream out = new FileInputStream(f); //该流用于从文件读取数据 FileInputStream fis=new FileInputStream(uploadify); bis=new BufferedInputStream(fis); FileOutputStream fos=new FileOutputStream(new File(dir,newFileName)); bos=new BufferedOutputStream(fos); byte [] buf=new byte[4096]; int len=-1; while ((len=bis.read(buf))!=-1) { bos.write(buf,0,len); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally{ if (null!=bis) { try { bis.close(); } catch (IOException e) { e.printStackTrace(); } } if (null!=bos) { try { bos.close(); } catch (IOException e) { e.printStackTrace(); } } } return null; }
//附件下载 public String download() { try { String path=""; String realPath = "/upload/contrast/test.java"; realPath = realPath.replace(‘\\‘, ‘/‘); isWindows = isWindowsOS(); // 判断是否是windows系统 if (isWindows) {// windows path=ServletActionContext.getServletContext().getRealPath(realPath); } else {// linux path=realPath; } String load = path; File file = new File(load); InputStream inputStream = new BufferedInputStream(new FileInputStream(load)); byte[] buffer = new byte[inputStream.available()]; inputStream.read(buffer); Utils.getResponse().reset(); String fileName = daoHelper.queryForObject("product.gms.bom.bomCheck.findfileVisteName", this).toString(); Utils.getResponse().setCharacterEncoding("UTF-8"); Utils.getResponse().setContentType("application/txt"); Utils.getResponse().addHeader("Content-Disposition", "attachment;filename=\"" + URLEncoder.encode(fileName, "UTF-8") + "\""); Utils.getResponse().addHeader("Content-Length", "" + file.length()); OutputStream outputStream = new BufferedOutputStream(Utils.getResponse().getOutputStream()); outputStream.write(buffer); inputStream.close(); outputStream.flush(); outputStream.close(); } catch (Exception e) { e.printStackTrace(); } return null;}