㈠ java实现图片上传至服务器并显示,如何做希望要具体的代码实现
很简单。
可以手写IO读写(有点麻烦)。
怕麻烦的话使用FileUpload组件 在servlet里doPost嵌入一下代码
public void doPost(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException{
response.setContentType("text/html;charset=gb2312");
PrintWriter out=response.getWriter();
//设置保存上传文件的目录
String uploadDir =getServletContext().getRealPath("/up");
System.out.println(uploadDir);
if (uploadDir == null)
{
out.println("无法访问存储目录!");
return;
}
//根据路径创建一个文件
File fUploadDir = new File(uploadDir);
if(!fUploadDir.exists()){
if(!fUploadDir.mkdir())//如果UP目录不存在 创建一个 不能创建输出...
{
out.println("无法创建存储目录!");
return;
}
}
if (!DiskFileUpload.isMultipartContent(request))
{
out.println("只能处理multipart/form-data类型的数据!");
return ;
}
DiskFileUpload fu = new DiskFileUpload();
//最多上传200M数据
fu.setSizeMax(1024 * 1024 * 200);
//超过1M的字段数据采用临时文件缓存
fu.setSizeThreshold(1024 * 1024);
//采用默认的临时文件存储位置
//fu.setRepositoryPath(...);
//设置上传的普通字段的名称和文件字段的文件名所采用的字符集编码
fu.setHeaderEncoding("gb2312");
//得到所有表单字段对象的集合
List fileItems = null;
try
{
fileItems = fu.parseRequest(request);//解析request对象中上传的文件
}
catch (FileUploadException e)
{
out.println("解析数据时出现如下问题:");
e.printStackTrace(out);
return;
}
//处理每个表单字段
Iterator i = fileItems.iterator();
while (i.hasNext())
{
FileItem fi = (FileItem) i.next();
if (fi.isFormField()){
String content = fi.getString("GB2312");
String fieldName = fi.getFieldName();
request.setAttribute(fieldName,content);
}else{
try
{
String pathSrc = fi.getName();
if(pathSrc.trim().equals("")){
continue;
}
int start = pathSrc.lastIndexOf('\\');
String fileName = pathSrc.substring(start + 1);
File pathDest = new File(uploadDir, fileName);
fi.write(pathDest);
String fieldName = fi.getFieldName();
request.setAttribute(fieldName, fileName);
}catch (Exception e){
out.println("存储文件时出现如下问题:");
e.printStackTrace(out);
return;
}
finally //总是立即删除保存表单字段内容的临时文件
{
fi.delete();
}
}
}
注意 JSP页面的form要加enctype="multipart/form-data" 属性, 提交的时候要向服务器说明一下 此页面包含文件。
如果 还是麻烦,干脆使用Struts 的上传组件 他对FileUpload又做了封装,使用起来更傻瓜化,很容易掌握。
-----------------------------
以上回答,如有不明白可以联系我。
㈡ jsp如何将图片上传到服务器某个文件夹里面,而路径存到数据库中!!请教!!!
用smartupload 控件来完成 你网络下一大堆的例子,算了我帮你网络,不然你分不给我,要记的给我呀,至于保存在数据库中,你可以用年月日时分秒这样的格式生成一个文件存放目录,将图片的路径保存到数据库中
<%@ page language="java" contentType="text/html; charset=GB2312" pageEncoding="GB2312"%>
<%@ page language="java" import="java.io.*"%>
<%@ page language="java" import="com.jspsmart.upload.*"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB2312">
<title>文件上传Bean</title>
</head>
<body>
<jsp:useBean id="mySmartUpload" scope="page" class="com.jspsmart.upload.SmartUpload" />
<FORM METHOD="POST" ACTION="Ex7_7.jsp" ENCTYPE="multipart/form-data">
<INPUT TYPE="FILE" NAME="FILE1" SIZE="50"><BR>
<INPUT TYPE="FILE" NAME="FILE2" SIZE="50"><BR>
<INPUT TYPE="FILE" NAME="FILE3" SIZE="50"><BR>
<INPUT TYPE="FILE" NAME="FILE4" SIZE="50"><BR>
<INPUT TYPE="SUBMIT" VALUE="Upload">
</FORM>
<%
//上传文件计数
int count=0;
//初始化,传入pageContext内置变量
mySmartUpload.initialize(pageContext);
//允许上传的文件类型
mySmartUpload.setAllowedFilesList("htm,html,txt,jar,");
//或者设定拒绝上传的文件类型
// mySmartUpload.setDeniedFilesList("exe,bat,jsp");
// 拒绝的物理路径
// mySmartUpload.setDenyPhysicalPath(true);
// 设置文件最大为 50000 bytes
mySmartUpload.setMaxFileSize(50000);
// 允许一次最多上载文件大小不超过 200000 bytes
// mySmartUpload.setTotalMaxFileSize(200000);
try {
// 上传操作
mySmartUpload.upload();
//以原文件名存储在web服务器虚拟路径下
//返回上传的文件数
count = mySmartUpload.save("/Upload", mySmartUpload.SAVE_VIRTUAL);
} catch (Exception e){
//输出意外信息
out.println("<b>Wrong selection : </b>" + e.toString());
}
// 显示文件上载数
out.println(count + " file(s) uploaded.");
%>
</body>
</html>
㈢ 通过JSP怎样上传图片到服务器
1.限制文件上传类型只能是图片
function checkFileType(name,file){
var extArray = new Array(".doc",".docx");
var allowSubmit = false;
if (!file){
return;
}
while (file.indexOf("\\") != -1){
file = file.slice(file.indexOf("\\") + 1);
}
var ext = file.slice(file.indexOf(".")).toLowerCase();
for (var i = 0; i < extArray.length; i++) {
if (extArray[i] == ext){
allowSubmit = true;
break;
}
}
if(!allowSubmit){
alert("只能上传以下格式的文件:"+ (extArray.join("")) + "\n请重新选择再上传.");
document.getElementById(name).value = "";
}
}
其中:extArray是要求文件类型。可自行定义。
2.引入jQuery外部文件
jquery-2.1.4.min.js
3.编写js代码
$(function () {
$('#txtfilePath1').uploadReview({
width: 350,
height: 350,
target: '#uploadReview1_content'
});
});
其中:txtfilePath1是input:file。width,height是预览图片的宽度和高度。target是显示预览图片的位置。
4.编写jsp页面代码
<body>
<input type="text" class="yourClassName" name="filePath1" id="filePath1"/>
<input type="file" id="txtfilePath1" name="txtfilePath1" style="display:none;">
<input type="button" onclick="txtfilePath1.click()" id="fileup1" name="fileup1" class="searchThing"value="上传">
</body>
注: 这个是很久以前在网上看到的,就整理了下来,但是这么久都没用过,所以也没调试过,你自己试一试研究研究, 再来网上很多博客里,他们写的很详细的,可以去看看
㈣ 请问jsp页面如何上传照片到服务器呢,
这个是我以前用的一个用jsp上传的,servlet是一样的,你可以自己修改下。
普通参数也是可以接受的
在jsp页面中你需要导入jsmart的中文jar包,如果你需要的话可以密我,我邮箱发给你
上传页面upload.html
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
</head>
<body>
<form action="uploadfile.jsp" method="post" enctype="multipart/form-data">
<table width="380" border="0" align="center" cellpadding="0" cellspacing="0" style="font-size:12px;">
<tr>
<td height="40" align="right">节目名称:</td>
<td><input type="text" style="WIDTH: 210px" id="mcdb_content" name="mcdb_content" /></td>
</tr>
<td height="40" align="right">节目链接地址:</td>
<td><input type="text" style="WIDTH: 210px" id="linkUrl" name="linkUrl" /></td>
</tr>
<tr>
<td height="40" align="right" valign="middle">
上传焦点图片:</td>
<td><input type="file" name="upfile" id="file"></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="button" value="提交"></td>
</tr>
</table>
</form>
</body>
</html>
处理上传文件的页面uploadfile.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ page import="com.jspsmart.upload.*;" %>
<%
SmartUpload mySmartUpload =new SmartUpload();
//上传文件的限制大小
long file_size_max=4000000;
String fileName2="",ext="",testvar="";
//应保证在根目录中有此目录的存在(也就是说需要自己建立相应的文件夹)
String url="/upload/";
//初始化
mySmartUpload.initialize(pageContext);
//只允许上载此类文件
try {
mySmartUpload.setAllowedFilesList("bmp,jpg,tiff,gif,pcx,tga,exif,fpx,svg,psd,cdr,pcd,dxf,ufo,eps,ai,raw");//此处的文件格式可以根据需要自己修改
//上载文件
mySmartUpload.upload();
} catch (Exception e){
//上传类型出现异常
%>
<SCRIPT language=javascript>
alert("只允许上传图片");
window.location='upload.html';
</script>
<%
}
try{
//得到上传的文件
com.jspsmart.upload.File myFile = mySmartUpload.getFiles().getFile(0);
//如果文件获得为空
if (myFile.isMissing()){%>
<SCRIPT language=javascript>
alert("请先选择要上传的文件");
window.location='upload.html';
</script>
<%}
//得到了上传的文件
else{
//String myFileName=myFile.getFileName(); //取得上载的文件的文件名
ext= myFile.getFileExt(); //取得后缀名
int file_size=myFile.getSize(); //取得文件的大小
String saveurl="";
//如果文件没有超过限制上传的大小
if(file_size<file_size_max){
//更改文件名,取得当前上传时间的毫秒数值
Calendar calendar = Calendar.getInstance();
String filename = String.valueOf(calendar.getTimeInMillis());
saveurl=application.getRealPath("/")+url;
String filenamea="";
//保存路径
saveurl+=filename+"."+ext;
filenamea+=filename+"."+ext;
//接受普通参数
Request req = mySmartUpload.getRequest();
String bt=(String)req.getParameter("mcdb_content");
String linkurl = (String)req.getParameter("linkUrl");
myFile.saveAs(saveurl,SmartUpload.SAVE_PHYSICAL);
out.print(filenamea);
}
}
}catch (Exception e){
out.print(e.toString());
}
%>
㈤ JSP页面上传图片到数据库怎么实现更简单
一般来说有两种形式
1.file上传到服务器,然后将地址保存到数据库。
2.将文件改为base64格式的字符串,将字符串存到数据库。
㈥ jsp如何将图片上传到服务器某个文件夹里面,而路径存到mysql数据库中,然后将数据库中的图片显示到另一页面
你把图片存到数据库?还是只存的图片名? 用smartupload 控件来完成 你{ // 上传操作 mySmartUpload.upload(); //以原文件名存储在web服务器虚拟
㈦ java编程:怎么用JSP(javabean)上传一张图片到服务器的指定文件夹呢
先导smartupload jar包!在写form表单<input tyle="file" enctype="multipart/form-data" method="post">enctype和method别写错了!
写一个简单的吧!
<%page import="com.jspsmart.upload.*"%>
<%
SmartUpload su=new SmartUpload ();//初始化SmartUpload对象
try{ //捕获他可能出现的异常
su.upload();//执行上传
}catch(Exception ex){
ex.printStackTrace;
}
File file=su.getFile().getFile(0); //(得到单个的上传文件的信息)这里得到的File对象是你到的jar包里的com.jspsmart.upload.File类型 别写成IO 里面的File了
String filepath="upload\\"; //在这之前要在你所建项目的目录下单建一个upload文件夹
filepath+=file.getFileName();
file.saveAs(filepath,SmartUpload.SAVE-VIRTUAL);
不知道是否建了与它相对应的数据库表啊?
不懂得再玩吧!
%>
㈧ 在servlet和jsp里面怎么上传图片到服务器啊
在 servlet 的doGet 或者doPost 里面写
FileInputStream fis=new FileInputStream(new File("图片路径"));
int count=fis.available();
byte[] b=new byte[count];
fis.read(b,0,count);
Pic m=new Pic();
m.setPicture(b);
PicDAO m=new PicDAO();
m.save(m);
m.getSession().beginTransaction().commit();
Pic 是Hibernate的PoJo类
㈨ jsp如何上传图片到数据库
jsp上传图片到数据,在数据库中有一种类型就是blob存储类型,就是用于储存二进制的。在java.sql里面的PreparedStatment有个setBlob()方法存入数据库,还有ResultSet里的getBlob()就是读取,详情你可以看JDBC Blob如何使用。
在jsp里上传图片很少用上述方式存储到数据库中,一般是将图片上传到服务器项目目录文件夹中,然后数据库中保存该图片文件的地址,如/item/upload/images/我上传的图片.jpg
㈩ java实现图片上传至服务器并显示,如何做
给你段代码,是用来在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 = new FileInputStream(file);
byte[] b = new byte[1024];
int i = 0;
while((i = fis.read(b))!=-1)
{
output.write(b, 0, i);
}
output.write(b, 0, b.length);
output.flush();
response.flushBuffer();
}
catch(Exception e)
{
System.out.println("Error!");
e.printStackTrace();
}
finally
{
if(fis != null)
{
fis.close();
fis = null;
}
if(output != null)
{
output.close();
output = null;
}
}
}
这个程序的功能是根据传入的文件名(id),来为浏览器返回图片流,显示在<img>标签里
标签的格式写成如下:
<img src="http://localhost:8080/app/preview?id=111 "/><br/>
显示的是111.gif这个图片
你上面的问题:
1.我觉得你的第二个办法是对的,我们也是这样做的,需要的是把数据库的记录id号传进servlet,然后读取这条记录中的路径信息,生成流以后返回就是了
关于上传文件的问题,我记得java中应该专门有个负责文件上传的类,你调用就行了,上传后存储在指定的目录里,以实体文件的形式存放
你可以参考这个:
http://blog.csdn.net/arielxp/archive/2004/09/28/119592.aspx
回复:
1.是的,在response中写入流就行了
2.是发到servlet中的,我们一般都是写成servlet,短小精悍,使用起来方便,struts应该也可以,只是我没有试过,恩,你理解的很对