java.io.FileNotFoundException:

jackie319 2010-11-01 03:34:46
求救!!!在图片上传的程序中,本地(xp)调试好的程序正常,放到远程服务器(linux)无法正常运行。报:java.io.FileNotFoundException: C:\Documents and Settings\Administrator\桌面\2222.jpg (No such file or directory)
。 at com.servlet.AddGoods.doPost(AddGoods.java:100)
(下面红颜色的那行)

主要代码:
String picturePath=request.getParameter("picturePath");
String path=this.getServletContext().getRealPath("/");
// 构造数据输入流对象
java.io.FileInputStream fis = new java.io.FileInputStream(picturePath);
java.io.DataInputStream dis = new java.io.DataInputStream(fis);

// 构造数据输出流对象
java.io.FileOutputStream outFile = new java.io.FileOutputStream(path+"images/"+picPath);
java.io.DataOutputStream outData = new java.io.DataOutputStream(outFile);
...全文
3291 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
magong 2010-11-02
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 jackie319 的回复:]

加了enctype='multipart/form-data' 取不到值,null

[/Quote]
当然就不是getParameter这么简单了。这样吧,下面是一个简单的例子,仅仅帮助理解。但是真正用的话,请用CommonsUploadFile等这些成熟的上传框架。
页面:
<form method='POST' enctype='multipart/form-data' action='UploadServlet'>
<input name="file1" type="file" />
<input name="upload" type="submit" value="上传" />
</form>

UploadServlet:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
InputStream is = request.getInputStream();
OutputStream os = new FileOutputStream(new File("e:/sample.txt"));
byte[] b = new byte[request.getContentLength()];
is.read(b);
os.write(b);
os.close();
PrintWriter out = response.getWriter();
out.print("file uploading finished。");
}
jackie319 2010-11-02
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 aoli444 的回复:]
1 通过enctype="multipart/form-data" ,后台可以从form中取
<form name="uploadForm" method="post" enctype="multipart/form-data">
<input id="fileUpload" name="fileUpload" type="file" class="edit_input" value="" /……
[/Quote]
第二种方法明显不可取。第一种方法的话request得到null,看来只能用上传组件了。
aoli444 2010-11-02
  • 打赏
  • 举报
回复
1 通过enctype="multipart/form-data" ,后台可以从form中取
<form name="uploadForm" method="post" enctype="multipart/form-data">
<input id="fileUpload" name="fileUpload" type="file" class="edit_input" value="" />

2 先将文件拷贝到服务器,然后取新地址
jackie319 2010-11-02
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 aoli444 的回复:]
远程服务器取的地址是相对远程服务器来的,但是图片是放在本地的,当然取不到。
[/Quote]
那要怎么解决,哥们说具体点嘛。
aoli444 2010-11-02
  • 打赏
  • 举报
回复
远程服务器取的地址是相对远程服务器来的,但是图片是放在本地的,当然取不到。
jackie319 2010-11-02
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 magong 的回复:]
引用 4 楼 jackie319 的回复:

不用用户传过来的path,怎么找得到那个图片?

你这个概念上有偏差。
浏览器负责读取本地文件并传到服务器,服务器哪能去到客户机上开InputStream呢?
客户端用于上传的Form是这样的

HTML code
<form method='POST' enctype='multipart/form-data' action='Yo……
[/Quote]

加了enctype='multipart/form-data' 取不到值,null
rayfeng_cq 2010-11-01
  • 打赏
  • 举报
回复
linux和windows 路径符号不同。
magong 2010-11-01
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 jackie319 的回复:]

不用用户传过来的path,怎么找得到那个图片?
[/Quote]
你这个概念上有偏差。
浏览器负责读取本地文件并传到服务器,服务器哪能去到客户机上开InputStream呢?
客户端用于上传的Form是这样的
<form method='POST' enctype='multipart/form-data' action='YourServlet'>
stl0 2010-11-01
  • 打赏
  • 举报
回复
把"\"替换成"/", 试一下
jackie319 2010-11-01
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 softwarexiang120 的回复:]
建议路径用"\",你可以获取路径测试下,java程序中的路径是和linux本身的路径不一样
[/Quote]这个我知道,我是想问,我程序在linux上,怎么得到windows里的图片啊,要上传到服务器上。request得到的是带cdef盘什么的,但是linux不认啊,
softwarexiang120 2010-11-01
  • 打赏
  • 举报
回复
建议路径用"\",你可以获取路径测试下,java程序中的路径是和linux本身的路径不一样
jackie319 2010-11-01
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 jackie319 的回复:]
引用 3 楼 magong 的回复:
引用楼主 jackie319 的回复:
String picturePath=request.getParameter("picturePath");

java.io.FileInputStream fis = new java.io.FileInputStream(picturePath);

不要直接用用户送过来的path,自己取个后半截或者……
[/Quote]

你做过么,给个思路。。截取是不行的啊。
jackie319 2010-11-01
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 weipj001 的回复:]
用request获取路径
[/Quote]

就是用request获取的哦,
weipj007 2010-11-01
  • 打赏
  • 举报
回复
用request获取路径
jackie319 2010-11-01
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 hbu_zhy 的回复:]
linux和windows 路径符号不同。
[/Quote]

这个没关系吧,?是浏览器把流传过去的,
jackie319 2010-11-01
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 magong 的回复:]
引用楼主 jackie319 的回复:
String picturePath=request.getParameter("picturePath");

java.io.FileInputStream fis = new java.io.FileInputStream(picturePath);

不要直接用用户送过来的path,自己取个后半截或者干脆用Server自动生成的路径及文件名……
[/Quote]
不用用户传过来的path,怎么找得到那个图片?
magong 2010-11-01
  • 打赏
  • 举报
回复
[Quote=引用楼主 jackie319 的回复:]
String picturePath=request.getParameter("picturePath");

java.io.FileInputStream fis = new java.io.FileInputStream(picturePath);
[/Quote]
不要直接用用户送过来的path,自己取个后半截或者干脆用Server自动生成的路径及文件名。
hbu_zhy 2010-11-01
  • 打赏
  • 举报
回复
linux和windows 路径符号不同。

81,092

社区成员

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

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