『壹』 关于java获取图片路径问题
但是编译的时候报空指针找不到图片 --- 你把相应错误信息贴一下?
为什么不是全路径,而是D:axx.png --- 这不是全路径是什么
method方法抄里面写后台的控制类上传方法,方法里面能够获取该文件,然后以流的方式写入到指定文件夹下的某个文件中。
参考下这个网页链接
<form method="post" action="/TomcatTest/UploadServlet" enctype="multipart/form-data">
enctype="multipart/form-data" 这个必须要写,action后台接收的方法,文件保存路径在控制器中可以自己随便指定。
『叁』 java图片路径问题
<img src="111.png" /> 引用的是同一目录下的,你上面那段代码根本就没输出到那个目录当然找不到了。 对于一个项目来说图片有个专有的文件夹存放,比如在WebRoot的imageFolder下,那么你在输出流写图片的时候要指定好这个相对路径,然后页面上用<img src="../imageFolder/111.png" />
通常来说解决方案是这样的:以一个图片上传的例子为例,首先会在xml文件中配置好上传文件的绝对路径(例如C:/XXDX/XX这样,将来部署到服务器上时,修改配置文件路径就好了)然后比如我们上传的图片都是用输入流写到xx/xx/war/upload中 (我看你后增加的代码中没有flush(),是不对的) 然后在页面jsp中用/upload/xxx.png取值,之所以这么取是因为“/”是war根目录,当然你要是用"../"那种方式你要查明白你现在的目录级别。
『肆』 在Java项目中上传图片时如何使上传的图片自动保存到指定路径
用struts也可以实现 多文件上传
下面是我写的代码,
参数中有要保存的目录
作为参考!
/*文件目录*/
public static String [] fileArray={
"logo.png",
"index.swf",
"OEMInfo.txt",
"favicon.ico"};
/**
* @author Caoshun
* @see 接收并保存文件
* */
public static void receiveAndSaveAllFileByPath(ActionForm form,String rootPath1,String rootPath2){
String fileName="";
//获取表单中的文件资源
Hashtable<Object, Object> files = form.getMultipartRequestHandler().getFileElements();
//遍历文件,并且循环保存
//当前处理文件序号
int file_num=1;
for (Enumeration<Object> e = files.keys(); e.hasMoreElements();) {
/*根据处理的当前文件下标,确定文件名*/
fileName=fileArray[file_num-1];
FormFile file = (FormFile) files.get((String) e.nextElement());
if (file != null && file.getFileSize() > 0) {
try {
//使用formfile.getInputStream()来获取一个文件的输入流进行保存。
//文件名
//String fileName = file.getFileName();
//System.out.println("debug in AddEnterpriceAction.java on line 152 fileName is : "+fileName);
//文件大小
//int fileSize = file.getFileSize();
//文件流
InputStream is = file.getInputStream();
//将输入流保存到文件
//String rootPath = this.servlet.getServletContext().getRealPath("files");
//往cn中写入
File rf = new File(rootPath1);
FileOutputStream fos = null;
fos = new FileOutputStream(new File(rf, fileName));
byte[] b = new byte[10240];
int real = 0;
real = is.read(b);
while (real > 0) {
fos.write(b, 0, real);
real = is.read(b);
}
//往en中写入
File rf2 = new File(rootPath2);
InputStream is2 = file.getInputStream();
FileOutputStream fos2 = null;
fos2 = new FileOutputStream(new File(rf2, fileName));
byte[] b2 = new byte[10240];
int real2 = 0;
real2 = is2.read(b2);
while (real2 > 0) {
fos2.write(b2, 0, real2);
real2 = is2.read(b2);
}
//关闭文件流
fos.close();
is.close();
fos2.close();
is2.close();
} catch (RuntimeException e1) {
e1.printStackTrace();
} catch (Exception ee) {
ee.printStackTrace();
}
file.destroy();
}
file_num++;
}
}
『伍』 java存图片路径到mysql
|mysql> create table t_test(
-> id int primary key,
-> filepath varchar(256));
mysql> insert into t_test values(
-> 1, 'd:\\abc');
mysql> select * from t_test;
+----+----------+
| id | filepath |
+----+----------+
| 1 | d:\abc |
+----+----------+
把如”d:\abc"中的路径中的\换成两个\是可以的
但在java中写的时回候要注意这样写:答
"insert into t_test values(1, 'd:\\\\abc')"
『陆』 java如何将图片保存在数据库中
一般都是这样的,就是在你服务器有一个专门放置图片的文件夹,然后数据库保存的是你服务器图片的路径。需要用的时候就去数据库里面取路径。得到路径以后你想怎么处理图片是你的事情了。
至于如何去数据库取路径这个就是简单的db操作。
加载驱动类:
Class.forName(DBDriver);
获取连接:
Connection conn = DriverManager.getConnection(url,username,password);
创建操作对象:
PreparedStatement stmt = con.prepareStatement(sql);
执行操作:
ResultSet rs = stmt.executeQuery();
遍历结果:
List list = new ArrayList();
while(rs.next()){
//具体操作,通常用rs.getString(name)取值
Image img = new Image();//图片类对应你数据库中图片表格
img.setSrc(rs.getString("src"));//假设你数据库中image表中图片地址字段是src
list.add(img);
}
记得关闭资源:
rs.close();
stmt.close();
con.close();
看你的意思是已经取出来了不知道怎么显示:
你取出来之后可以把图片放在一个list里面然后去页面上遍历这个list
<c:forEach var="chakan1" items="list">
<tr>
<td>
<img src="${chakan1.src}"/>
</td>
</tr>
</c:forEach>
大致应该是这样
『柒』 java如何存储图片到数据库,存路径和二进制是什么意思
一种方法是把图像文件本身放在某个文件夹里,然后在数据表里设一个“路径“字段,类型为字符串,存图像的路径(比如“D:\files\xxx.jpg”)。
另一种方法是,把图像文件本身,作为一个巨大的二进制数据,放在数据库中;具体方法是,数据表中设置一个”数据“字段,类型是二进制数据,存放图像本体。