jsp和servlet上传图片到Myeclipse项目目录下

就是头像上传到MyEclipse项目目录下,然后目录保存在数据库中,页面取出来显示... 就是头像上传到MyEclipse项目目录下,然后目录保存在数据库中,页面取出来显示 展开
 我来答
少亦1991
2012-06-24 · 超过17用户采纳过TA的回答
知道答主
回答量:51
采纳率:0%
帮助的人:44.7万
展开全部
试试吧,应该可以看懂。目录的话,可以不保存数据库中,方法很多。只要能显示出来就行。代码如下:
<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也蛮强大,前提是用的好,做页面
kid_jy
2012-06-21 · TA获得超过793个赞
知道小有建树答主
回答量:1362
采纳率:0%
帮助的人:1269万
展开全部
jspsmartupload 用这个插件 如果要上传项目的指定路径下只要<%=request.getContextPath()%>就行
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
阿刚炖蛋
2012-06-21 · TA获得超过3004个赞
知道大有可为答主
回答量:1789
采纳率:92%
帮助的人:986万
展开全部
设置目录为相对路径就可以了~
追问
如何设置,可不可以请大师讲详细点,最好把代码给贴出来啊,谢谢了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式