乐码库:一个极速、放心、纯净的下载站! 更新: 资源发布
  • 您的位置:首页 > 技术文档 > Java > java web图片上传和文件上传实例详解
  • 收藏本页
      java web图片上传和文件上传实例详解
      发布时间:2016-12-21 08:07:40 关键词: java,web,图片上传和文件上传,java,web图片上传和文件上传实例,java,web图片上传和文件上传实现方法
      内容简介:这篇文章主要介绍了java web图片上传和文件上传实例详解的相关资料,这里提供了两种方法及示例代码,需要的朋友可以参考下

    java web图片上传和文件上传

    图片上传和文件上传本质上是一样的,图片本身也是文件。文件上传就是将图片上传到服务器,方式虽然有很多,但底层的实现都是文件的读写操作。

    注意事项

    1.form表单一定要写属性enctype="multipart/form-data"

    2.为了能保证文件能上传成功file控件的name属性值要和你提交的控制层变量名一致,

    例如空间名是file那么你要在后台这样定义

    private File file; //file控件名

    private String fileContentType;//图片类型

    private String fileFileName; //文件名

    1.jsp页面

    <%@ page language="java" contentType="text/html; charset=UTF-8" 
      pageEncoding="UTF-8"%> 
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
    <html> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
    <meta http-equiv="pragma" content="no-cache" /> 
    <base target="_self"> 
    <title>文件上传</title> 
    </head>
    <body>
    <form method="post" action="" enctype="multipart/form-data">
    <input type="file" name="file" value="file">
    <input type="submit" value="确定">
    </form>
    </body>
    </html>
    

    1.页面数据需要提交的Controller

    
    
    package com.cpsec.tang.chemical.action;
    
    import java.io.File;
    import java.io.IOException;
    import java.util.Random;
    
    import javax.annotation.Resource;
    import javax.servlet.http.HttpServletRequest;
    
    import org.apache.commons.io.FileUtils;
    import org.apache.struts2.ServletActionContext;
    import org.springframework.stereotype.Controller;
    
    import com.cpsec.tang.chemical.biz.LunboBiz;
    import com.cpsec.tang.chemical.entity.Image;
    import com.opensymphony.xwork2.ActionSupport;
    
    
    @Controller("lunboAction")
    public class LunboAction extends ActionSupport {
      /**
       * 
       */
      private static final long serialVersionUID = 1L;
      @Resource(name="lunboBiz")
      private LunboBiz lunboBiz;
      private Image image;
      private File file; //file控件名
      private String fileContentType;//图片类型
      private String fileFileName; //文件名
      private Integer number;
      
      public String findImage(){
        image=lunboBiz.findImage();
        return SUCCESS;
      }
      
      public String alterImage(){
        image=lunboBiz.findImage();
        return SUCCESS;
      }
      
      public String alterImage1(){
        HttpServletRequest request = ServletActionContext.getRequest();
        String root = request.getRealPath("/upload");//图片要上传到的服务器路径
        String names[]=fileFileName.split("\\.");
        String fileName="";
        if(names.length>=1){
          fileName=getRandomString(20)+"."+names[names.length-1];
        }
        String picPath="upload/"+fileName;//图片保存到数据库的路径
        File file1=new File(root);
        try {
          FileUtils.copyFile(file, new File(file1,fileName));
          }
        } catch (IOException e) {
          e.printStackTrace();
        }
        return SUCCESS;
      }
      
      /*获取一条随机字符串*/
      public String getRandomString(int length) { //length表示生成字符串的长度 
        String base = "abcdefghijklmnopqrstuvwxyz0123456789";   
        Random random = new Random();   
        StringBuffer sb = new StringBuffer();   
        for (int i = 0; i < length; i++) {   
          int number = random.nextInt(base.length());   
          sb.append(base.charAt(number));   
        }   
        return sb.toString();   
       }  
    
    }
    
    

    这是通过复制的方式上传文件,还有其他方式

    方法二

    
    
    @Controller("contractAction")
    public class ContractAction extends ActionSupport {
      
      private final static String UPLOADDIR = "/files";//文件上传的路径,在webContent下建立
      private File file; //input控件名一定为file 
      //上传文件名集合  
      private String fileFileName;  
      //上传文件内容类型集合  
      private String fileContentType; 
      
      private String filename;
     
      public String upload() throws FileNotFoundException, IOException{
        String path=uploadFile();//文件保存数据库的路径
      
        return SUCCESS;
      }
      
      //执行上传功能  
      @SuppressWarnings("deprecation")
      public String uploadFile() throws FileNotFoundException, IOException {  
        try {  
          InputStream in = new FileInputStream(file);  
          String dir = ServletActionContext.getRequest().getRealPath(UPLOADDIR); 
          File fileLocation = new File(dir); 
          //此处也可以在应用根目录手动建立目标上传目录 
          if(!fileLocation.exists()){ 
            boolean isCreated = fileLocation.mkdir(); 
            if(!isCreated) { 
              //目标上传目录创建失败,可做其他处理,例如抛出自定义异常等,一般应该不会出现这种情况。 
              return null; 
            } 
          }
          // this.setFileFileName(getRandomString(20));
          String[] Name=this.getFileFileName().split("\\.");
          String fileName=getRandomString(20)+"."+Name[Name.length-1];
          this.setFileFileName(fileName);
          System.out.println(fileName);
          File uploadFile = new File(dir, fileName);
          OutputStream out = new FileOutputStream(uploadFile);  
          byte[] buffer = new byte[1024 * 1024];  
          int length;  
          while ((length = in.read(buffer)) > 0) {  
            out.write(buffer, 0, length);  
          }
          in.close();  
          out.close();  
          return UPLOADDIR.substring(1)+"\\"+fileFileName;
          } catch (FileNotFoundException ex) {
            return null;  
          } catch (IOException ex) {
            return null;  
        }  
      }
      
      
      public static String getRandomString(int length){
        String str="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
        Random random=new Random();
        StringBuffer sb=new StringBuffer();
        for(int i=0;i<length;i++){
         int number=random.nextInt(62);
         sb.append(str.charAt(number));
        }
        return sb.toString();
      }  
    
    }
    
    

     

    除了单图上传还有多图上传,原理都是一样的

    package com.cpsec.tang.chemical.action;
    
    import java.io.File; 
    import java.io.FileInputStream; 
    import java.io.FileNotFoundException; 
    import java.io.FileOutputStream; 
    import java.io.IOException; 
    import java.io.InputStream; 
    import java.io.OutputStream;
    import java.util.List;
    import javax.servlet.http.HttpServletRequest;
    import org.apache.struts2.ServletActionContext;
    import com.opensymphony.xwork2.ActionSupport;
    
    
    /**
     * 多文件上传
     */
    public class FilesUploadAction extends ActionSupport {
         //上传文件存放路径  
         private final static String UPLOADDIR = "/upload";  
         //上传文件集合  
         private List<File> file;  
         //上传文件名集合  
         private List<String> fileFileName;  
         //上传文件内容类型集合  
         private List<String> fileContentType;  
         
         public List<File> getFile() {  
           return file;  
         }  
     
         public void setFile(List<File> file) {  
           this.file = file;  
         }  
     
        public List<String> getFileFileName() {  
          return fileFileName;  
        }  
     
         public void setFileFileName(List<String> fileFileName) {  
           this.fileFileName = fileFileName;  
         }  
     
         public List<String> getFileContentType() {  
           return fileContentType;  
         }  
     
         public void setFileContentType(List<String> fileContentType) {  
           this.fileContentType = fileContentType;  
         }  
     
         
         public String uploadform() throws Exception {
           HttpServletRequest request = ServletActionContext.getRequest();
           String webpath=null;//上传路径
           for (int i = 0; i < file.size(); i++) {  
             //循环上传每个文件  
             uploadFile(i); 
             webpath="upload/"+this.getFileFileName().get(i);
           }
           return "SUCCESS";
         } 
       
     
        
        //执行上传功能  
         private String uploadFile(int i) throws FileNotFoundException, IOException {  
           try {  
             
             InputStream in = new FileInputStream(file.get(i));  
             String dir = ServletActionContext.getRequest().getRealPath(UPLOADDIR); 
             File fileLocation = new File(dir); 
             //此处也可以在应用根目录手动建立目标上传目录 
             if(!fileLocation.exists()){ 
               boolean isCreated = fileLocation.mkdir(); 
               if(!isCreated) { 
                 //目标上传目录创建失败,可做其他处理,例如抛出自定义异常等,一般应该不会出现这种情况。 
                 return null; 
               } 
             } 
             String fileName=this.getFileFileName().get(i); 
             File uploadFile = new File(dir, fileName);
             OutputStream out = new FileOutputStream(uploadFile);  
             byte[] buffer = new byte[1024 * 1024];  
             int length;  
             while ((length = in.read(buffer)) > 0) {  
               out.write(buffer, 0, length);  
             }
             in.close();  
             out.close();  
             return uploadFile.toString();
           } catch (FileNotFoundException ex) {
             return null;  
           } catch (IOException ex) {
             return null;  
           }  
         }
       }
    
    

    感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

      最新更新
      热门排行榜