我要在一个网页上传一张图片到服务器,然后保存图片的地址,在另一个页面显示图片

我用的是struts,在页面上传图片后,Action里得到了这个图片文件File,然后我想将图片保存到服务器的一个文件夹里,并将地址保存在数据库里,这样需要在网页上显示的... 我用的是struts,在页面上传图片后,Action里得到了这个图片文件File,然后我想将图片保存到服务器的一个文件夹里,并将地址保存在数据库里,这样需要在网页上显示的时候就直接写上地址就行了。
问题是:我写ServletActionContext.getServletContext().getRealPath()+文件名, 但是提示说不对,FileNotFoundException ,上面地址打印出来是:D:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\XXq ,
我是想让用户上传照片的,请问,这个图片最好是保存在什么地方,应该怎么写,网页上方便访问的。
回答的有用的话追加分数
我想问一下:这个 ServletActionContext.getServletContext().getRealPath("images"); 这个目录,正常情况下我要去电脑上去找的话,这个目录应该在哪呢
展开
 我来答
yf900917
2012-02-12 · 超过11用户采纳过TA的回答
知道答主
回答量:63
采纳率:0%
帮助的人:30.6万
展开全部
public class UploadAction extends ActionSupport {
//接收文件 名称需要和表单name名称一致
private File image;
//上传多个图片文件
private File[] images;
//上传文件类型[image]为表单name名称,ContentType为固定写法
private String imageContentType;
private String[] imagesContentType;
//上传文件名称[image]为表单name名称,FileName为固定写法
private String imageFileName;
private String[] imagesFileName;

//上传一个文件
public String upload(){
//将长传的文件存储到images文件夹下,首先根据images名称得到具体路径
String realPath = ServletActionContext.getServletContext().getRealPath("images");
File file = new File(new File(realPath),imageFileName);
//如果输入为空 没选择图片的话
if(image != null){
//判断文件夹存不存在
if(!file.getParentFile().exists()){
file.getParentFile().mkdir(); //创建一个文件夹
}
try {
FileUtils.copyFile(image, file);
super.addActionError("上传成功");
} catch (IOException e) {
super.addActionError("上传失败");
e.printStackTrace();
}
}
return SUCCESS;
}
//上传多个文件
public String manyUpload(){
//将长传的文件存储到images文件夹下,首先根据images名称得到具体路径
String realPath = ServletActionContext.getServletContext().getRealPath("images");
System.out.println(realPath);
File file =null;
if(images != null){
try {
for (int i = 0; i <images.length ; i++) {
file = new File(new File(realPath),imagesFileName[i]);
FileUtils.copyFile(images[i], file);
}
super.addActionError("上传成功");
} catch (IOException e) {
super.addActionError("上传失败");
e.printStackTrace();
}
}
return SUCCESS;
}

public File getImage() {
return image;
}
public void setImage(File image) {
this.image = image;
}
public String getImageContentType() {
return imageContentType;
}
public void setImageContentType(String imageContentType) {
this.imageContentType = imageContentType;
}
public String getImageFileName() {
return imageFileName;
}
public void setImageFileName(String imageFileName) {
this.imageFileName = imageFileName;
}
public File[] getImages() {
return images;
}
public void setImages(File[] images) {
this.images = images;
}
public String[] getImagesContentType() {
return imagesContentType;
}
public void setImagesContentType(String[] imagesContentType) {
this.imagesContentType = imagesContentType;
}
public String[] getImagesFileName() {
return imagesFileName;
}
public void setImagesFileName(String[] imagesFileName) {
this.imagesFileName = imagesFileName;
}
}
百度网友9566112
2012-02-13 · TA获得超过151个赞
知道小有建树答主
回答量:256
采纳率:0%
帮助的人:145万
展开全部
首先你上传的文件应该跟你服务器的项目放在一起,至于那个文件夹,看你的需要了,否则在读取的时候如何来获得你的路径呢,其次在数据库中存的是一个地址,最好是针对于你的项目存的一个相对地址,这样你的项目发布的时候无论什么人访问都可以找到你的这个图片。还有一个就是读取图片的时候直接度数据库里的字段,页面上读取的也是相对地址,也就是这个字段信息就是你所需要的相对路径的地址
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
5renshuo
2012-02-12 · 超过55用户采纳过TA的回答
知道小有建树答主
回答量:295
采纳率:0%
帮助的人:159万
展开全部
images后面加个/就行啦!给分吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式