我一直在尝试将image
上传到数据库。所以我做了一个browse
按钮来浏览目录并获取图像。假设如果没有选择图像,则default image
将上传到数据库。图像存储在源文件夹下名为'resources'
的文件夹中。在图像中,帮助程序是包含.java文件的文件夹,下面是resources
文件夹我将图像上载为FileInputStream
,代码为
File pic=new File(imgloc);
FileInputStream fis=new FileInputStream(pic);
如果未选择图像上传默认图像,则我的代码为
File pic=new File(this.getClass().getResource("/resources/profile1.png").getFile());
FileInputStream fis=new FileInputStream(pic);
我对数据库的查询是
ps.setBinaryStream(1,fis ,(int) pic.length()); //While substituing for '?' in query
构建到jar后,在尝试添加默认图像时会生成FileNotFoundException
。可能是问了好几次,我没有找到解决方案。我希望将图像作为文件读取。谢谢。
答案 0 :(得分:0)
帮助说明我使用源目录创建项目
src
在源代码下方,我有一个包含starthere
Main
我创建另一个源目录xxx
并放入文件a.txt
我还在xxx
下创建了一个名为text
的目录,并放入一个名为b.txt
我还在src
下创建了一个名为other
的目录,并放入了一个名为c.txt
的文件
我的代码是
URL url = Main.class.getResource("/a.txt");
System.out.println(url);
URL url2 = Main.class.getResource("/text/b.txt");
System.out.println(url2);
URL url3 = Main.class.getResource("/other/c.txt");
System.out.println(url3);
我的输出是
D:\ temp> java -cp ab.jar starthere.Main
罐:文件:/ d:/temp/ab.jar /a.txt
罐:文件:/ d:/temp/ab.jar /text/b.txt
罐:文件:/ d:/temp/ab.jar /other/c.txt
修改强>
由于您不想使用文件,只需使用InputStream,您可以使用
InputStream fis = Main.class.getResourceAsStream("/a.txt");
然后使用ps.setBinaryStream(1, fis);
答案 1 :(得分:0)
考虑以下包结构
/
/testing_package
/testing_package/Main.java
/testing_package/Image.png
现在这是一个获取Image.png并将其放入数据库
的程序public class Main {
public static void main(String...args) {
System.out.println(Main.class.getResource("image.jpg"));
//PreparedStatement as ps
ps.setBinaryStream(1, Main.class.getResourceAsStream("image.jpg")));
}
}
要记住的事
使用getResource(...)
或getResourceAsStream(...)
时,请将相对位置用于要调用其函数的类实例。