jsp以二进制的形式上传到远程数据库,报错java.io.FileNotFoundException:123.jpg (系统找不到指定文件)

上传到本地数据库是正常的,可是上传到远程数据库就报错,
严重: Servlet.service() for servlet jsp threw exception
java.io.FileNotFoundException: 1233.jpg (系统找不到指定的文件。)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:106)
at java.io.FileInputStream.<init>(FileInputStream.java:66)
at org.apache.jsp.MIS.Flowerimage_jsp._jspService
这是代码

本地测试能够正常插入,可是上传远程数据库就报错,而且,测试插入其他的数据(不是图片)都能够正常插入和读取,这是本地插入后的截图

求大神指点

这个相对目录 1233.jpg 没有带目录名的,很难保证换了环境还能工作,你需要做的是确认当前服务器的当前目录是哪个目录。你可以同过操作系统的进程管理器看到 java.exe 在哪个目录下运行的。也可以用打印出 System.getProperty("user.dir") 来看当前目录是什么。

通常情况下,我们不应该使用相对目录,而是通过配置文件告诉程序我们的图片文件夹的根目录在哪儿,然后相对于哪个根目录来使用绝对路径访问文件。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-12-31
在插入图片数据时有问题, pstmt.setBinaryStream... 这个处理不对
你把str传给数据库了 数据库会根据str代表的文件进行读取 在数据库的机器上 根本不存在str代表的文件 所有肯定会出错追问

不是啊,大神~,我就是把str代表的二进制数据插入到image字段里面去,我在本地是可以插入的,远程数据库和本地数据库的设计是一样的啊,然后就空指针了,真不明白,求解

第2个回答  2012-12-31
setBinaryStream不对,麻烦你再看看其他例子
第3个回答  2013-01-01
上传文件的过程应该是先客户端通过页面把文件post过来到服务器上,服务器通过一些框架插件,比如smartupload先保存到服务器本地,然后在服务器本地这个文件上建立输出流,保存数据库。建议你先网上搜一下http上传文件的流程。
相似回答