最近在项目中看到一个图片上传存到服务器中相对路径/upload下
他是直接File file = new File("/upload");
请问直接这样可以找到路径吗? 我测试到时候为何说找不到呢,
我记得以前到代码是先用request获取到项目路径再加上/upload的,
但是这里直接/upload如何去做存的操作呢
那样写是可以的,表示相对程序目录的下一层upload下,但是问题是天知道它相对哪个目录,最好明确写出来,用request.getRealPath
用 file.getAbsolutePath() 可以输出它的绝对路径
你这样找是跟目录,可以写上绝对路径。
String extend = worker.getPhoto().substring(worker.getPhoto().lastIndexOf("."));// 文件的扩展名
String folder = "/" + Globe.UPLOAD_FOLDER + "/" + worker.getUser().getUserName() + "/" + Globe.WORKER_FOLDER + "/";// 存放上传文件的目录
web.file.createFolder(getBase(request) + folder);// 创建文件夹,getBase(request);获得项目的物理路径(在磁盘中的位置)
String imgPath = folder + web.tool.getNowDate(2) + extend;// 产生新图片的相对路径(不带盘符的)
web.file.copyFile(getBase(request) + worker.getPhoto(), getBase(request) + imgPath);// 上传文件(这里只是复制了,因为上传的事情之前已经完成了)
worker.setPhoto(imgPath);// 这个路径是插入数据库的
worker = workerDao.add(worker);// 给数据库插入一条记录
查询的时候就能获取插入数据库的路径了,
希望lz能理解这段逻辑!
如果你用的是Tomcat服务器的话, 直接去Tomcat解压问价中就能找到upload文件夹,这个文件夹下存放的就是File file = new File("/upload");文件
上传图片时我有一次是这样写的
String path = session.getServletContext().getRealPath("upload");
String filename = UUID.randomUUID() + file.getOriginalFilename();
File targetFile = new File(path, filename);
这样图片会默认放到Tomcat部署路径的upload目录下,不是想要的位置,所以不得不把path改成绝对路径,你也可以试试
其实无论服务器端怎么写,只要服务器端程序有合适的算法在使用时能够定位都是可以的。
filePhoto.SaveAs(Server.MapPath("~/upload/" + fileName));
使用绝对路径吧,或者你看看存在服务器上的位置,把应用路径补充完整
照片: width=100 height=100>
还是用绝对路径吧,这样稳妥一点。