头像图片显示---数据库中保存路径 图片上传到工作目录下

该博客讲述了如何处理头像图片的上传与显示,建议在开发环境中将图片保存到工作目录下以确保显示正常。图片以用户ID命名并存储在特定路径下,通过`src="上传路径/id.jpg"`进行读取。文章提到,Servlet的`getRealPath("")`返回服务器根目录而非工作目录,因此需要配置工作目录路径和图片存放目录,例如在`test.properties`文件中进行设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上传的头像图片以 当前用户id为名 id.jpg..........

读取图片src=”上传路径/id.jpg“

开发环境下,上传图片到eclipse的workspace下,图片才可以显示,所有图片上传路径应为工作目录。

顺便说下:

ServletActionContext.getServletContext().getRealPath(""))指的是服务器根目录:E:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp4\wtpwebapps\Exercise

ServletActionContext.getServletContext().getRealPath("upload"))->E:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp4\wtpwebapps\Exercise\upload

不是工作目录。

所以需要配置文件存放 工作目录路径和存放图片目录名

test.properties:

#项目所在路径
workspace=E:/workspace/Exercise
#文件上传目录名
directory=upload
这样在action文件中读取相应的目录

UserAction.java:

private LoadProperties lp = new LoadProperties();//定义properties工具类
public String uploadFile(){
	flag = ERROR;
	User u  = (User) ServletActionContext.getContext().getSession().get("Login_user");
	String targetDirectory = lp.getValue("workspace")+"/WebContent/"+lp.getValue("directory");//读取配置文件中值,组成路径E:/workspace/Exercise/WebConent/upload
    uploadFileFileName = user.getId()+"_"+uploadFileFileName;
    //生成上传的文件对象  
	File target = new File(targetDirectory,uploadFileFileName);  
	//如果文件已经存在,则删除原有文件
	if(target.exists()){  
		target.delete();  
	}  
	//复制file对象,实现上传  
	try {  
		FileUtils.copyFile(uploadFile, target);  
	} catch (IOException e) {  
		e.printStackTrace();  
	}  
	String path = lp.getValue("directory")+"/"+uploadFileFileName;//读取配置文件中的值,组成图片路径upload/*.jpg...
	user = userService.getUserById(u.getId());
	user.setPath(path);
	userService.modifyUser(user);
	return flag;
}
LoadProperties.java:

private static Properties p = new Properties();  
	  
    /** 
     * 读取properties配置文件信息 
     */  
    static{  
        try {  
            p.load(LoadProperties.class.getClassLoader().getResourceAsStream("test.properties"));  //src下的test.properties文件
        } catch (IOException e) {  
            e.printStackTrace();   
        }  
    }  
    /** 
     * 根据key得到value的值 
     */  
    public static String getValue(String key)  
    {  
        return p.getProperty(key);  
    }






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值