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

如果网站使用的是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);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值