java怎么上传图片然后显示在JSP页面中

Python012

java怎么上传图片然后显示在JSP页面中,第1张

java上图片和上传文件的方式是一样的... 都是将文件上传到指定目录后,地址放入数据库中.

这种方式, 只需要学习下 apache中的common下的upload包 操作即可.

如果是struts, 带有这个jar包的

很简单。

可以手写IO读写(有点麻烦)。

怕麻烦的话使用FileUpload组件 在servlet里doPost嵌入一下代码

public void doPost(HttpServletRequest request,HttpServletResponse response)

throws ServletException,IOException{

response.setContentType("text/htmlcharset=gb2312")

PrintWriter out=response.getWriter()

//设置保存上传文件的目录

String uploadDir =getServletContext().getRealPath("/up")

System.out.println(uploadDir)

if (uploadDir == null)

{

out.println("无法访问存储目录!")

return

}

//根据路径创建一个文件

File fUploadDir = new File(uploadDir)

if(!fUploadDir.exists()){

if(!fUploadDir.mkdir())//如果UP目录不存在 创建一个 不能创建输出...

{

out.println("无法创建存储目录!")

return

}

}

if (!DiskFileUpload.isMultipartContent(request))

{

out.println("只能处理multipart/form-data类型的数据!")

return

}

DiskFileUpload fu = new DiskFileUpload()

//最多上传200M数据

fu.setSizeMax(1024 * 1024 * 200)

//超过1M的字段数据采用临时文件缓存

fu.setSizeThreshold(1024 * 1024)

//采用默认的临时文件存储位置

//fu.setRepositoryPath(...)

//设置上传的普通字段的名称和文件字段的文件名所采用的字符集编码

fu.setHeaderEncoding("gb2312")

//得到所有表单字段对象的集合

List fileItems = null

try

{

fileItems = fu.parseRequest(request)//解析request对象中上传的文件

}

catch (FileUploadException e)

{

out.println("解析数据时出现如下问题:")

e.printStackTrace(out)

return

}

//处理每个表单字段

Iterator i = fileItems.iterator()

while (i.hasNext())

{

FileItem fi = (FileItem) i.next()

if (fi.isFormField()){

String content = fi.getString("GB2312")

String fieldName = fi.getFieldName()

request.setAttribute(fieldName,content)

}else{

try

{

String pathSrc = fi.getName()

if(pathSrc.trim().equals("")){

continue

}

int start = pathSrc.lastIndexOf('\\')

String fileName = pathSrc.substring(start + 1)

File pathDest = new File(uploadDir, fileName)

fi.write(pathDest)

String fieldName = fi.getFieldName()

request.setAttribute(fieldName, fileName)

}catch (Exception e){

out.println("存储文件时出现如下问题:")

e.printStackTrace(out)

return

}

finally //总是立即删除保存表单字段内容的临时文件

{

fi.delete()

}

}

}

注意 JSP页面的form要加enctype="multipart/form-data" 属性, 提交的时候要向服务器说明一下 此页面包含文件。

如果 还是麻烦,干脆使用Struts 的上传组件 他对FileUpload又做了封装,使用起来更傻瓜化,很容易掌握。

-----------------------------

以上回答,如有不明白可以联系我。