private String myFileContentType //类型
private String myFileFileName //文件名
//。。。。getXXX() setXXX()方法
//输入流
InputStream is = new FileInputStream(myFile)
//设定文件路径
String photoPath = ServletActionContext.getServletContext()
.getRealPath("/user/photo/")
File filePhotoPath = new File(photoPath)
//判断这个路径是否存在,如果不存在创建这个路径
if (!filePhotoPath.isDirectory()) {
filePhotoPath.mkdir()
}
String extension = FilenameUtils.getExtension(this
.getMyFileFileName()) //后缀名 比如jpg
String filename = UUID.randomUUID().toString() + "." + extension
// 目标文件
File tofile = new File(photoPath, filename)
// 输出流
OutputStream os = new FileOutputStream(tofile)
byte[] buffer = new byte[1024]
int length = 0
while ((length = is.read(buffer)) > 0) {
os.write(buffer, 0, length)
}
// 关闭输入流
is.close()
// 关闭输出流
os.close()
<img src="111.png" />引用的是同一目录下的,你上面那段代码根本就没输出到那个目录当然找不到了。 对于一个项目来说图片有个专有的文件夹存放,比如在WebRoot的imageFolder下,那么你在输出流写图片的时候要指定好这个相对路径,然后页面上用<img src="../imageFolder/111.png" />通常来说解决方案是这样的:以一个图片上传的例子为例,首先会在xml文件中配置好上传文件的绝对路径(例如C:/XXDX/XX这样,将来部署到服务器上时,修改配置文件路径就好了)然后比如我们上传的图片都是用输入流写到xx/xx/war/upload中 (我看你后增加的代码中没有flush(),是不对的) 然后在页面jsp中用/upload/xxx.png取值,之所以这么取是因为“/”是war根目录,当然你要是用"../"那种方式你要查明白你现在的目录级别。