遇到的问题:
1、获得的名字是input框的名字,不能获得图片的名字,原因:getFileName()写成getFiledName()了
2、产生1205错误,原因:input(file)中没有写name属性
主要代码:
servlet:
response.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("utf-8");
//获得路径使用
ServletConfig config=this.getServletConfig();
//创建对象
SmartUpload mySmartUpload=new SmartUpload();
//初始化
mySmartUpload.initialize(config, request, response);
try {
//初始化上传图片
mySmartUpload.upload();
//这里是获取jsp页面中的input(file)的属性,切记input(file)中要写name属性,否则会报1205错误
com.jspsmart.upload.File f1=mySmartUpload.getFiles().getFile(0);
//切记这下面获得图片名字的方法是getFileName(),如果写成getFiledName(),将获得的是jsp页面中input输入框的名字
String imgName=f1.getFileName();
//System.out.println("这是获得图片名字:"+imgName);
//读取图片名字中。的位置,是为了得到图片的格式
int d=imgName.lastIndexOf(".");
//截取字符串,获得图片的格式(加。)
String imgType=imgName.substring(d, imgName.length());
//System.out.println("这是获得图片类型:"+imgType);
//根据时间产生一个字符串,作为图片的名字
String NewImgName=String.valueOf(System.currentTimeMillis());
//得到图片将要存储的位置
String Path=config.getServletContext().getRealPath("images");
//如果上面的文件夹不存在,则创建文件夹
File file=new File(Path);
//判断问价夹是否存在
if(!file.exists()){
file.mkdirs();
}
//设置图片存储的真正路径,保存在tomcat下webapps中相应工程下的images文件夹中
String imgPath=Path+File.separator+NewImgName+imgType;
//System.out.println("这是获得图片新路径:"+imgPath);
//以新的路径和名字保存图片
f1.saveAs(imgPath);
} catch (SmartUploadException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
jsp
<body>
<form action="PicUploadServlet" method="post" enctype="multipart/form-data">
<!-- 切记这里file中必须写name属性,否则报1205错误 -->
<input type="file" name="test"/>
<input type="submit" value="提交" />
</form>
</body>