网站的文件的上传,并将相对路径保存到数据库的代码实现。

    xiaoxiao2021-03-25  99

    如果网站使用的是struts2框架,那么上传功能可以这样做。

    网站的建设过程中免不了要上传文件,比如管理员上传图片到服务器上,然后将文件的相对路径保存在数据库。

    这里为什么说是相对路径保存在数据库,因为jsp页面只能用相对路径读到图片才能成功显示。而上传图片又只能是上传到服务器上,可以理解成绝对路径。这就是下面代码中用到了relatedAddress 和address 的原因。

     

    如果要让文件能够顺利上载,需要将对应的form的“enctype”属性设置成“multipart/form-data”并且一定需要将“METHOD”属性设置为“post”。

     

    新建的一个UploadAction.代码如下:

    package com.action;

    import java.io.File;

    import javax.servlet.http.HttpServletRequest;

    import org.apache.struts2.interceptor.ServletRequestAware;

    import com.bean.mediaBean; import com.opensymphony.xwork2.ActionSupport;

    @SuppressWarnings("serial") public class UploadAction extends ActionSupport implements ServletRequestAware {  private javax.servlet.http.HttpServletResponse response;  private javax.servlet.http.HttpServletRequest request;  private File upload;  private String fileName;  private String uploadContentType;  private String block;  private String board;

     public String getBoard() {   return board;  }

     public void setBoard(String board) {   this.board = board;  }

     public String getUploadFileName() {   return fileName;  }

     public void setUploadFileName(String fileName) {   this.fileName = fileName;  }

     public File getUpload() {   return upload;  }

     public void setUpload(File upload) {   this.upload = upload;  }

     public void setUploadContentType(String contentType) {   this.uploadContentType = contentType;  }

     public String getUploadContentType() {   return this.uploadContentType;  }    public String getBlock() {   return block;  }

     public void setBlock(String block) {   this.block = block;  }  // 获得HttpServletRequest对象  public void setServletRequest(HttpServletRequest request) {   this.request = request;  }

     public String upload() throws Exception {   String board = request.getParameter("board");   String block = request.getParameter("block");   String introduce = request.getParameter("introduce");   java.io.InputStream is = new java.io.FileInputStream(upload);      String address = request.getSession().getServletContext().getRealPath("/image")+ "/" +block + "/" + fileName;   String relatedAddress = "image"+ "/" +block + "/" + fileName;   java.io.OutputStream os = new java.io.FileOutputStream(address);        byte buffer[] = new byte[99999];   int count = 0;   while ((count = is.read(buffer)) > 0) {    os.write(buffer, 0, count);   }   os.close();   is.close();   mediaBean media = new mediaBean();   media.setBlock(block);   media.setBoard(board);   media.setIntroduce(introduce);   media.setTitle(fileName);   media.setAddress(relatedAddress);      media.add();

      return "success";  }

     public String showAllByMouth() {   return null;

     }  } 这里要改的就是address、relatedAddress 、board、block、introduce 。

    address改为你要保存的地址。

    relatedAddress 相对地址,是为了把相对地址存为数据库。

    这两个要保持相对一致。

     String address = request.getSession().getServletContext().getRealPath("/image")+ "/" +block + "/" + fileName;   String relatedAddress = "image"+ "/" +block + "/" + fileName;

    board、block、introduce是我代码的需求。可以根据自己的需求取舍更改。

     

    把路径保存到数据库的方法。这里因为我写好了一个mediaBean函数,封装了对数据库的添加的方法。所以只要如下代码就可以实现把路径保存到数据库。

     mediaBean media = new mediaBean();   media.setBlock(block);   media.setBoard(board);   media.setIntroduce(introduce);   media.setTitle(fileName);   media.setAddress(relatedAddress);

     

    转载请注明原文地址: https://ju.6miu.com/read-21218.html

    最新回复(0)