jsp图片上传以二进制流保存到数据库

时间:2021-11-30 21:44:12
jsp图片上传以二进制流保存到数据库,如果是本地上传是没有问题,要是跨网络上传就不行了
这是我现在的代码File file = new File("c:\\it.jpg");InputStream photoStream = new FileInputStream(file);
请问如何获得外网上传的图片的流啦,请教各位大哥了 急急。。。。。

11 个解决方案

#1


得到 二进制数据 然后存到数据就可以了。

#4


http://download.csdn.net/source/1089134

这也可以下载来看一看。

#5


知道为什么 跨网络就不行吗?

请看你主机的代码:

File file = new File("c:\\it.jpg");

你在本地时,JAVA可以找到你的电脑的C盘的 it.jpg

如果换成别人的计算机了,当这台计算机访问你的WEB应用,JAVA就去找这台计算机的c:\\it.jpg, 结果没

有找到,所以保存到数据库失败。


解决办法:

c:\\it.jpg(本地上传至--->WEB部署的服务器的某个固定目录-->数据库

即:

使用表单上传的方式,在JSP 搞一个标签<input type="file">,先将你的图片上传到WEB应用部署的服务

器的某个固定目录上,再用“流”读WEB服务器固定目录里的这个图片,再送到数据库中保存即可。

#6


我的服务器端是不需要保存图片呀,要在跨网络的时候获得客户端的图片,怎么获得网络流,以流的形式保存,在我的服务器上始终是没有图片的,只是将二进制流保存到数据库中就行,还望能不能清楚一点

#7


File file = new File(图片地址);
其中的图片地址,如果是本地的话是没问题,如果是远程怎么获得客户端的图片地址

#8


QusetionForm qusetionForm = (QusetionForm)form;
FormFile imageTopic= qusetionForm.getImageTopic();
String name=imageTopic.getFileName();
String url=(servlet.getServletConfig().getServletContext().getRealPath("\\")+name).replace('\\','/');
URL图片路径

#9


上传图片 在保存

#10


byte[] data=new byte[imageTopic.getFileSize()];
data=imageTopic.getFileData();
//文件写入流
FileOutputStream fos=new FileOutputStream(url);
fos.write(data);
//关闭文件流
fos.close();
图片上传到服务器上
然后保存存URL既可

#11


<%
// 新建一个SmartUpload对象 
SmartUpload su = new SmartUpload();
// 上传初始化 
su.initialize(pageContext);
su.upload();
// 将上传文件全部保存到指定目录 
int count = su.save("/upload");
out.println(count + "个文件上传成功!<br>");

// 利用Request对象获取参数之值 
out.println("TEST=" + su.getRequest().getParameter("TEST")
+ "<BR><BR>");

// 逐一提取上传文件信息,同时可保存文件。 
for (int i = 0; i < su.getFiles().getCount(); i++) {
com.jspsmart.upload.File file = su.getFiles().getFile(i);
FileInputStream photoStream = new FileInputStream(file.getFilePathName());
System.out.println(photoStream);

// 若文件不存在则继续 
if (file.isMissing())
continue;
// 显示当前文件信息 
out.println("<TABLE BORDER=1>");
out.println("<TR><TD>表单项名(FieldName)</TD><TD>"
+ file.getFieldName() + "</TD></TR>");
out.println("<TR><TD>文件长度(Size)</TD><TD>" + file.getSize()
+ "</TD></TR>");
out.println("<TR><TD>文件名(FileName)</TD><TD>"
+ file.getFileName() + "</TD></TR>");
out.println("<TR><TD>文件扩展名(FileExt)</TD><TD>"
+ file.getFileExt() + "</TD></TR>");
out.println("<TR><TD>文件全名(FilePathName)</TD><TD>"
+ file.getFilePathName() + "</TD></TR>");
out.println("</TABLE><BR>");

// 将文件另存 
// file.saveAs("/upload/" + myFile.getFileName()); 
// 另存到以WEB应用程序的根目录为文件根目录的目录下 
// file.saveAs("/upload/" + myFile.getFileName(), 
//su.SAVE_VIRTUAL); 
// 另存到操作系统的根目录为文件根目录的目录下 
// file.saveAs("c:\\temp\\" + myFile.getFileName(), 
//su.SAVE_PHYSICAL);

}
%>
如何通过上面的代码转换成文件流呀,请各位帮忙看一下

#1


得到 二进制数据 然后存到数据就可以了。

#2


#3


#4


http://download.csdn.net/source/1089134

这也可以下载来看一看。

#5


知道为什么 跨网络就不行吗?

请看你主机的代码:

File file = new File("c:\\it.jpg");

你在本地时,JAVA可以找到你的电脑的C盘的 it.jpg

如果换成别人的计算机了,当这台计算机访问你的WEB应用,JAVA就去找这台计算机的c:\\it.jpg, 结果没

有找到,所以保存到数据库失败。


解决办法:

c:\\it.jpg(本地上传至--->WEB部署的服务器的某个固定目录-->数据库

即:

使用表单上传的方式,在JSP 搞一个标签<input type="file">,先将你的图片上传到WEB应用部署的服务

器的某个固定目录上,再用“流”读WEB服务器固定目录里的这个图片,再送到数据库中保存即可。

#6


我的服务器端是不需要保存图片呀,要在跨网络的时候获得客户端的图片,怎么获得网络流,以流的形式保存,在我的服务器上始终是没有图片的,只是将二进制流保存到数据库中就行,还望能不能清楚一点

#7


File file = new File(图片地址);
其中的图片地址,如果是本地的话是没问题,如果是远程怎么获得客户端的图片地址

#8


QusetionForm qusetionForm = (QusetionForm)form;
FormFile imageTopic= qusetionForm.getImageTopic();
String name=imageTopic.getFileName();
String url=(servlet.getServletConfig().getServletContext().getRealPath("\\")+name).replace('\\','/');
URL图片路径

#9


上传图片 在保存

#10


byte[] data=new byte[imageTopic.getFileSize()];
data=imageTopic.getFileData();
//文件写入流
FileOutputStream fos=new FileOutputStream(url);
fos.write(data);
//关闭文件流
fos.close();
图片上传到服务器上
然后保存存URL既可

#11


<%
// 新建一个SmartUpload对象 
SmartUpload su = new SmartUpload();
// 上传初始化 
su.initialize(pageContext);
su.upload();
// 将上传文件全部保存到指定目录 
int count = su.save("/upload");
out.println(count + "个文件上传成功!<br>");

// 利用Request对象获取参数之值 
out.println("TEST=" + su.getRequest().getParameter("TEST")
+ "<BR><BR>");

// 逐一提取上传文件信息,同时可保存文件。 
for (int i = 0; i < su.getFiles().getCount(); i++) {
com.jspsmart.upload.File file = su.getFiles().getFile(i);
FileInputStream photoStream = new FileInputStream(file.getFilePathName());
System.out.println(photoStream);

// 若文件不存在则继续 
if (file.isMissing())
continue;
// 显示当前文件信息 
out.println("<TABLE BORDER=1>");
out.println("<TR><TD>表单项名(FieldName)</TD><TD>"
+ file.getFieldName() + "</TD></TR>");
out.println("<TR><TD>文件长度(Size)</TD><TD>" + file.getSize()
+ "</TD></TR>");
out.println("<TR><TD>文件名(FileName)</TD><TD>"
+ file.getFileName() + "</TD></TR>");
out.println("<TR><TD>文件扩展名(FileExt)</TD><TD>"
+ file.getFileExt() + "</TD></TR>");
out.println("<TR><TD>文件全名(FilePathName)</TD><TD>"
+ file.getFilePathName() + "</TD></TR>");
out.println("</TABLE><BR>");

// 将文件另存 
// file.saveAs("/upload/" + myFile.getFileName()); 
// 另存到以WEB应用程序的根目录为文件根目录的目录下 
// file.saveAs("/upload/" + myFile.getFileName(), 
//su.SAVE_VIRTUAL); 
// 另存到操作系统的根目录为文件根目录的目录下 
// file.saveAs("c:\\temp\\" + myFile.getFileName(), 
//su.SAVE_PHYSICAL);

}
%>
如何通过上面的代码转换成文件流呀,请各位帮忙看一下