jsp上传文件到服务器问题

a8222777 2009-09-01 10:44:46
我用 jspsmart组件 做上传文件,我把图片上传到服务器,但当tomcat部署 Remove 掉项目时 服务器的图片就全没了,这样项目

拿到别的机子运行就没有图片,所以我把图片的名字+后缀 保存到数据库 但不知道当项目运行时如何将数据库的图片自动上传

到服务器上

或者不要保存到数据库,如何把图片直接保存在MyEclipse的项目中的upload的文件夹 ( upload文件夹是保存图片的 )

这样就是双份保存 如何做到

这是上传的代码:

uploadimage.jsp 页面

<%
SmartUpload mySmartUpload=new SmartUpload();
long file_size_max=4000000;
String fileName2="",ext="",testvar="";
String url="upload/";
mySmartUpload.initialize(pageContext);
try{
mySmartUpload.setAllowedFilesList("jpg,gif");
mySmartUpload.upload();
}
catch(Exception e)
{
%>
<script type="text/javascript">
alert("只允许上传.jpg和.gif类型图片文件");
</script>
<%
}
String name=null;
try
{
com.jspsmart.upload.File myFile=mySmartUpload.getFiles().getFile(0);
//若文件不存在则继续
if(myFile.isMissing())
{
%>
<script type="text/javascript">

alert("请选择要上传的文件");

window.location='upload.htm';

</script>
<%
}
else{

//String myFileName=myFile.getFileName(); //取得上载的文件的文件名

ext=myFile.getFileExt(); //取得后缀名

int file_size=myFile.getSize();

String saveurl="";

if(file_size<file_size_max)
{
//更改文件名,取得当前上传时间的毫秒数值

Calendar calendar=Calendar.getInstance();

String filename=String.valueOf(calendar.getTimeInMillis());

name=filename;

saveurl=application.getRealPath("/")+url;

saveurl+=filename+"."+ext;

// 将文件另存到以WEB应用程序的根目录为文件根目录的目录下
myFile.saveAs(saveurl,SmartUpload.SAVE_PHYSICAL);
}
}
}
catch(Exception e)
{

out.print(e.toString());

}

//ImageDao是一个图片的dao层
ImageDao imgDao=new ImageDao();

System.out.println(name+"."+ext);

//用AddImageName的方法添加一张图片名称到数据库中,不是图片的全路径,是图片名而已
int result=imgDao.AddImageName(name+"."+ext);

if(result>0)
{
response.sendRedirect("success.jsp");
}
else
{
out.print("<script language=javascript>alert('添加到数据库失败');</script>");
}
%>

upload.jsp 页面


<html>
<head>
<title>掉</title>
<script type="text/javascript">
function checkfile()
{

if(document.form1.file.value==null)
{
alert('去死');
return false;
}
return true;
}
</script>
</head>
<body>
<table border="0" align="center" cellpadding="0" cellspacing="0">

<tr>

<td height="45" align="center" valign="middle">
<form action="uploadimage.jsp" method="post" enctype="multipart/form-data" name="form1" onsubmit="return checkfile()">

<input type="file" name="file">

<input type="submit" name="Submit" value="上传">

</form></td>

</tr>

</table>
...全文
1700 34 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
34 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaozhangnima 2009-09-01
  • 打赏
  • 举报
回复
String dir = null;
dir="D:\\os\\newproject\\GrpRWeb\\WebContent\\UploadImages";
dir+"/"+ + imageFileName;
或者dir=ServletActionContext.getServletContext().getRealPath("/UploadImages")
xiaozhangnima 2009-09-01
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 a8222777 的回复:]
大哥  你获取错了 现在图片都不知道跑到哪里  动态获取 E:\MyEclipse 7.0M1\workspace2\Uppass
你刚才教我 项目-右键-属性,能看到项目路径



String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

不对啊 获取是这样的  http://localhost:8080/Uppass/upload/  图片都不知道上哪了
[/Quote]
我这个不是给你用的
a8222777 2009-09-01
  • 打赏
  • 举报
回复
其实就很简单的回答我 怎么样 动态获得当前打开的 myeclipse的工作区的路径 就好了
a8222777 2009-09-01
  • 打赏
  • 举报
回复
大哥 你获取错了 现在图片都不知道跑到哪里 动态获取 E:\MyEclipse 7.0M1\workspace2\Uppass
你刚才教我 项目-右键-属性,能看到项目路径



String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

不对啊 获取是这样的 http://localhost:8080/Uppass/upload/ 图片都不知道上哪了
好吃的松子 2009-09-01
  • 打赏
  • 举报
回复
我是意思是,把这个路径放在myeclipse的项目中本身就不合理,项目路径中只是源码而已,最终是要部署到应用服务器的路径中的。
xiaozhangnima 2009-09-01
  • 打赏
  • 举报
回复
类似这种,获取项目的还真不知道,期待高手
xiaozhangnima 2009-09-01
  • 打赏
  • 举报
回复
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
a8222777 2009-09-01
  • 打赏
  • 举报
回复
晕 是动态获得啊 大哥 是叫我写死啊

假设我现在在随便的机子的myeclipse中导入而我不知道
他的workspace在那个路径如何获得 整个项目的全路进
xiaozhangnima 2009-09-01
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 a8222777 的回复:]
引用 9 楼 husheng86 的回复:
把你的saveurl设成服务器硬盘上的其它路径,这样就算被重新部署了,上传的文件还会存在。


这个让我有点明白了 

那如何获得当前 导入myeclipse中的项目的路径啊  假设我现在在随便的机子的myeclipse中导入而我不知道
他的workspace在那个路径如何获得  整个项目的全路进
[/Quote]
项目-右键-属性,能看到项目路径,其它就找到了
好吃的松子 2009-09-01
  • 打赏
  • 举报
回复
为什么要myeclipse目录呢,生产环境是不会有myeclipse的。你可以随便设置一个硬盘目录就可以了。
a8222777 2009-09-01
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 husheng86 的回复:]
把你的saveurl设成服务器硬盘上的其它路径,这样就算被重新部署了,上传的文件还会存在。
[/Quote]

这个让我有点明白了

那如何获得当前 导入myeclipse中的项目的路径啊 假设我现在在随便的机子的myeclipse中导入而我不知道
他的workspace在那个路径如何获得 整个项目的全路进
xuexijava 2009-09-01
  • 打赏
  • 举报
回复
Mark
好吃的松子 2009-09-01
  • 打赏
  • 举报
回复
把你的saveurl设成服务器硬盘上的其它路径,这样就算被重新部署了,上传的文件还会存在。
a8222777 2009-09-01
  • 打赏
  • 举报
回复
我是说项目部署好了 tomcat的webapps中就有这个项目的upload的文件夹 ,这时就会有图片上传,而在myeclipse中的这个项目的upload文件夹中没有图片的,图片在部署好的项目中而没有在myeclipse的项目中,而项目移植到别的地方就没有图片了,所以才保存在数据库,问题是:

大家给个建议 如何一加载图片读进部署好的tomcat/webapps的项目中 或者 不上传到服务器也不要保存在数据库 保存在 myeclipse中的这个项目中 myeclipse中的upload这个文件夹虽然和tomcat中的upload这个文件夹一样 不过图片是会在服务器那边的upload文件夹的
yrenyuan 2009-09-01
  • 打赏
  • 举报
回复
我最近也在研究这个问题,看大家的解释都不是很对路啊。
a8222777 2009-09-01
  • 打赏
  • 举报
回复
没一个很好的解释
inthirties 2009-09-01
  • 打赏
  • 举报
回复
一般使用目录保持upload目录的方式,实现上都不不是直接放到tomcat下的,

最好是有一个配置,通过这个配置来确定保存到那个目录里,

而且一般这样的形式,图片都是保持在专门的文件服务器上,提供静态服务,在自己应用里有一个配置表明这个提供静态服务的专用的文件服务器的url是怎样的,从而是部署和发布很方便。
LOVE小葡萄 2009-09-01
  • 打赏
  • 举报
回复
当tomcat部署 Remove 掉项目时 服务器的图片就全没了

如果是这样的话,你存储图片的路径就有问题了。你可以不存储到项目下的文件夹中
a8222777 2009-09-01
  • 打赏
  • 举报
回复
没人帮帮忙吗
hailang7210 2009-09-01
  • 打赏
  • 举报
回复
用ADODB.STREAM上传吧
加载更多回复(14)

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧