public String picture(@RequestParam MultipartFile[] imgs,HttpServletRequest request,Picture picture,HttpSession session) throws IOException {
for (MultipartFile myfile:imgs) {
if(myfile.isEmpty()){
request.setAttribute("msg", "文件上传失败!")
return "redirect:/pictureloading"
}else {
String path=request.getSession().getServletContext().getRealPath("images/imgs")
FileUtils.copyInputStreamToFile(myfile.getInputStream(), new File(path,myfile.getOriginalFilename()))
picture.setP_img("imgs/"+myfile.getOriginalFilename())
}
}
if (picture.getP_title()==null ||picture.getP_pctxt()==null) {
request.setAttribute("msg", "添加失败!")
return "redirect:/pictureloading"
}
pictureServiceImpl.addPicture(picture)
return "redirect:/pictureloading"
}
其实就是个update语句,你把图片的路径保存到字段里面,jsp页面这么写 <img src="你数据库保存的图片路径就行了。
希望我的回答对你有帮助,望采纳
很简单。可以手写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又做了封装,使用起来更傻瓜化,很容易掌握。
-----------------------------
以上回答,如有不明白可以联系我。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)