日期:2014-05-17  浏览次数:20679 次

jsp图片上传问题
通过表单形式<input type=file>把图片上传到服务器的一个文件夹中,然后在数据库中写入一个路径,在另一jsp页面中从数据库把路径读出来并显示出来,请给点源码

------解决方案--------------------
jsp页面
<form id="companyInfoForm" action="/CompanyInfoServlet" method="post" enctype="multipart/form-data">
<table>
<tr><td class="table-frame-input-title" width="120" height="22"
align="center">企业照片:</td>
<td>
<input type="file" id="companyImg" name="companyImg" style="width: 375px">
</td>
</tr></table>
</form>

提交到servlet 后台获取并存到数据库
class MyFileRenamePolicy implements FileRenamePolicy{
public File rename(File file){
String newName = addInNameExt(file.getName() , getDateStr());
File result = new File(file.getParentFile() , newName);

return result;
}

//返回一个当前时间的字符串表示
private String getDateStr(){
String pattern ="yyyyMMddHHmmssSSS";
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
String dateStr = sdf.format(new java.util.Date());

return dateStr;
}

//分离完整文件名的文件名和后缀,并在中间加入字符串后返回
private String addInNameExt(String fullName , String add){
String name = "";//文件名 
String ext = ""; //后缀
char point = '.';
int index = fullName.lastIndexOf(point);
if(index != -1){//如果有后缀
name = fullName.substring(0 , index);
ext = fullName.substring(index + 1);
}
else{
name = fullName;
}

return name+"_"+ add + point + ext;
}
}


/*设置上传文件路径*/
ServletContext context = getServletContext();
String realPath = context.getRealPath("/");
String saveDir = realPath + "upload\\";
File dir = new File(saveDir);
if(!dir.exists())
dir.mkdirs();

int maxPostSize = 4*5*1024*1024;
String encoding = "GBK";
FileRenamePolicy rename = new MyFileRenamePolicy();

MultipartRequest multi = null;

try{
multi = new MultipartRequest(req , 
saveDir , maxPostSize , encoding , rename);
//用于接收文本字段

}catch(IOException e){
//上传大小超过maxPostSize就会出现IOException

return;
}
//至此文件已经上传完成!

以下是获取图片名称
Enumeration fileNames = multi.getFileNames();
 String companyImg=multi.getFilesystemName("companyImg");
完了存数据库就会了吧
需要一个cos的包 网上多的是 随便下一个就好了

------解决方案--------------------
javajacob@163.com联系,可以给你源码。