jsp和servlet上传图片到Myeclipse项目目录下
3个回答
展开全部
试试吧,应该可以看懂。目录的话,可以不保存数据库中,方法很多。只要能显示出来就行。代码如下:
<body>
<%
request.setCharacterEncoding("utf-8");
long size = 5 * 1024 * 1024;//允许上传最大值为5MB
String fileType = "jpg,gif,JPG";//允许上传文件类型
String imgName = null;//图片名称
byte[] data = null;//数据
String filePath = "";//文件路径
String userID=String.valueOf(session.getAttribute("s_userID"));
//得到服务器目录webroot下的ImageFiles目录的完整路径
String path = super.getServletContext().getRealPath("/user_Image");
//System.out.println(path);
SmartUpload su = new SmartUpload();
//初始化
su.initialize(pageContext);
su.setMaxFileSize(size);
su.setAllowedFilesList(fileType);
su.setContentDisposition(null);
//上载文件
su.upload();
//System.out.println(su.getSize());
su.getRequest();
//循环取得所有上载的文件
Files files = su.getFiles();
if (files != null) {
//如果文件路径不存在则生成路径
java.io.File fileDir = new java.io.File(path);
//System.out.println("存在");
if (!fileDir.exists()) {
fileDir.mkdirs();
System.out.println("不存在");
}
//System.out.println(files.getCount());
//取出文件
for (int i = 0; i < files.getCount(); i++) {
com.jspsmart.upload.File file = files.getFile(i);
if (file.isMissing()){
//System.out.print("file.isMissin");
continue;}
else if ("setPicture".equals(file.getFieldName())) {
String type = file.getFilePathName();
type = type.substring(type.lastIndexOf("."));
imgName =userID;
imgName += type;
filePath = path + "\\" + imgName;
// System.out.println("filePath="+filePath);
//保存到指定文件
file.saveAs(filePath);
//读取文件
data = readFile(filePath);
break;
}else{
System.out.println("两种都不满足");}
}
}
if (data == null) {
out.print("没有图片");
out.print("<a href='updateUserPic.jsp'>返回</a>");
} else {
out.print("图片上传成功");
out.print("<a href='updateUserPic.jsp'>返回</a>");
}
%>
<%!byte[] readFile(String filePath) {
ByteArrayOutputStream bos = null;
try {
FileInputStream fs = new FileInputStream(filePath);
bos = new ByteArrayOutputStream(5 * 1024 * 1024);
byte[] b = new byte[1024];
int len;
while ((len = fs.read(b)) != -1) {
bos.write(b, 0, len);
}
fs.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
if (bos == null) {
return null;
} else {
return bos.toByteArray();
}
}%>
</body>
<body>
<%
request.setCharacterEncoding("utf-8");
long size = 5 * 1024 * 1024;//允许上传最大值为5MB
String fileType = "jpg,gif,JPG";//允许上传文件类型
String imgName = null;//图片名称
byte[] data = null;//数据
String filePath = "";//文件路径
String userID=String.valueOf(session.getAttribute("s_userID"));
//得到服务器目录webroot下的ImageFiles目录的完整路径
String path = super.getServletContext().getRealPath("/user_Image");
//System.out.println(path);
SmartUpload su = new SmartUpload();
//初始化
su.initialize(pageContext);
su.setMaxFileSize(size);
su.setAllowedFilesList(fileType);
su.setContentDisposition(null);
//上载文件
su.upload();
//System.out.println(su.getSize());
su.getRequest();
//循环取得所有上载的文件
Files files = su.getFiles();
if (files != null) {
//如果文件路径不存在则生成路径
java.io.File fileDir = new java.io.File(path);
//System.out.println("存在");
if (!fileDir.exists()) {
fileDir.mkdirs();
System.out.println("不存在");
}
//System.out.println(files.getCount());
//取出文件
for (int i = 0; i < files.getCount(); i++) {
com.jspsmart.upload.File file = files.getFile(i);
if (file.isMissing()){
//System.out.print("file.isMissin");
continue;}
else if ("setPicture".equals(file.getFieldName())) {
String type = file.getFilePathName();
type = type.substring(type.lastIndexOf("."));
imgName =userID;
imgName += type;
filePath = path + "\\" + imgName;
// System.out.println("filePath="+filePath);
//保存到指定文件
file.saveAs(filePath);
//读取文件
data = readFile(filePath);
break;
}else{
System.out.println("两种都不满足");}
}
}
if (data == null) {
out.print("没有图片");
out.print("<a href='updateUserPic.jsp'>返回</a>");
} else {
out.print("图片上传成功");
out.print("<a href='updateUserPic.jsp'>返回</a>");
}
%>
<%!byte[] readFile(String filePath) {
ByteArrayOutputStream bos = null;
try {
FileInputStream fs = new FileInputStream(filePath);
bos = new ByteArrayOutputStream(5 * 1024 * 1024);
byte[] b = new byte[1024];
int len;
while ((len = fs.read(b)) != -1) {
bos.write(b, 0, len);
}
fs.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
if (bos == null) {
return null;
} else {
return bos.toByteArray();
}
}%>
</body>
追问
其实我用struts框架实现上传,可以做到,只是现在老师要我们就用jsp编,不过上次我在网上已经百度到了,图片以流的形式读取出来,体会到jsp也蛮强大,前提是用的好,做页面
展开全部
jspsmartupload 用这个插件 如果要上传项目的指定路径下只要<%=request.getContextPath()%>就行
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
设置目录为相对路径就可以了~
追问
如何设置,可不可以请大师讲详细点,最好把代码给贴出来啊,谢谢了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询