java实现图片上传至服务器并显示,如何做?

来源:百度知道 编辑:UC知道 时间:2024/05/26 02:57:00
目标很简单,通过JSP页面让用户选择本地图片文件,提交就上传到服务器保存。上传成功的话JSP页面上就显示刚上传的图片。

我自己想了一下,觉得有两种办法可以试试:
1、服务器把图片作为blob型数据存进数据库,然后显示的时候就查数据库取出来送到JSP
2、服务器把图片作为文件保存到服务器某个文件夹,例如upload文件夹,然后把图片的路径名作为varchar型保存到数据库中。显示的时候就到数据库中查找路径名,处理后赋值给<img>的src属性

我想知道的是:
1、服务器端怎么从浏览器接收文件,通过流吗?如果是流那么用什么流呢?字节流、字符流或者其它的高级流?服务器接收到的文件是个什么样子?例如上传的是jpg图片,服务器最初接收到的就是.jpg的文件吗?

2、对于第一种实现方法,把blob数据从数据库取出来之后是什么样子?例如当初jpg图片作blob存进去的,取出来之后就是jpg的吗?还是要通过什么方法做成jpg?如果要做,怎么弄呢?常见的网页显示图片代码是<img src='图片URL'>,如果是数据库取出来的图片文件,要怎么在JSP中显示?

3、对于第二种实现方法,如果第一个问题解决的话,我自己琢磨吧。感觉这个方法好理解一些

-----------------------------------------------------------------
最好能有具体代码说明一下怎么做的,谢谢!!!

给你段代码,是用来在ie上显示图片的(servlet):

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String id = request.getParameter("id");
File file = new File(getServletContext().getRealPath("/")+"out"+"/"+id+".gif");
response.setCharacterEncoding("gb2312");
response.setContentType("doc");
response.setHeader("Content-Disposition", "attachment; filename=" + new String(file.getName().getBytes("gb2312"),"iso8859-1"));

System.out.println(new String(file.getName().getBytes("gb2312"),"gb2312"));

OutputStream output = null;
FileInputStream fis = null;
try
{
output = response.getOutputStream();
fis =