本文主要是介绍网站的文件的上传,并将相对路径保存到数据库的代码实现。,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
如果网站使用的是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);
这篇关于网站的文件的上传,并将相对路径保存到数据库的代码实现。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!