关于图片上传 本人正在做一个电子商务系统的作业,寻求图片上传的例子!例如用户注册可以上传头像,更新商品可以上传商品图片。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 package bing.up;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.util.List;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.commons.fileupload.FileItem;import org.apache.commons.fileupload.FileUploadException;import org.apache.commons.fileupload.disk.DiskFileItemFactory;import org.apache.commons.fileupload.servlet.ServletFileUpload;public class UpServlet extends HttpServlet { private static final long serialVersionUID = 1L; public UpServlet() { super(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //获得磁盘文件条目工厂 DiskFileItemFactory factory = new DiskFileItemFactory(); //获取文件需要上传到的路径 String path = request.getRealPath("/"); //String path = "D:"+File.separator; System.out.println("path:"+path); //如果没以下两行设置的话,上传大的 文件 会占用 很多内存, //设置暂时存放的 存储室 , 这个存储室,可以和 最终存储文件 的目录不同 /** * 原理 它是先存到 暂时存储室,然后在真正写到 对应目录的硬盘上, * 按理来说 当上传一个文件时,其实是上传了两份,第一个是以 .tem 格式的 * 然后再将其真正写到 对应目录的硬盘上 */ factory.setRepository(new File(path)); //设置 缓存的大小,当上传文件的容量超过该缓存时,直接放到 暂时存储室 factory.setSizeThreshold(1024*1024) ; //高水平的API文件上传处理 ServletFileUpload upload = new ServletFileUpload(factory); InputStream in = null; OutputStream out = null; //可以上传多个文件 try { List<FileItem> list = (List<FileItem>)upload.parseRequest(request); for(FileItem item:list){ System.out.println("isFormField:"+item.isFormField()); if(item.isFormField()){ //获取用户具体输入的字符串 ,名字起得挺好,因为表单提交过来的是 字符串类型的 String value = item.getString() ; System.out.println("value:"+value); }else{ /** * 以下三步,主要获取 上传文件的名字 */ //获取路径名 String value = item.getName() ; //索引到最后一个反斜杠 int start = value.lastIndexOf("\\"); //截取 上传文件的 字符串名字,加1是 去掉反斜杠, String filename = value.substring(start+1); System.out.println("filename:"+filename); //真正写到磁盘上 //它抛出的异常 用exception 捕捉 //item.write( new File(path,filename) );//第三方提供的 //手动写的 in = item.getInputStream(); File file = new File(path,filename); if(file.exists()){ boolean deletefile = file.delete(); System.out.println("deletefile:"+deletefile); } out = new FileOutputStream(file); int length = 0 ; byte [] buf = new byte[1024] ; System.out.println("获取上传文件的总共的容量:"+item.getSize()); // in.read(buf) 每次读到的数据存放在 buf 数组中 while( (length = in.read(buf) ) != -1) { //在 buf 数组中 取出数据 写到 (输出流)磁盘上 out.write(buf, 0, length); } } } } catch (FileUploadException e) { e.printStackTrace(); }finally{ if(in!=null){ try{ in.close(); }catch(Exception e){ e.printStackTrace(); } } if(null!=out){ try{ out.close(); }catch(Exception e){ e.printStackTrace(); } } } } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doGet(request, response); }}这是个文件上传的servlet,用的是smartupload,jar包自己去网上下吧,上传文件的保存路径可以自己设 在JSP页面中实现简单分页的问题! 使用OpenSessionInViewFilter的问题 session 有效时间设为4个小时,如何准确统计当前在线人数 TOMCAT启动异常和失败 这样的周号计算在SQL中怎么写 <讨论>~~~~~大家都是用什么方法连接数据库的???? Java异常处理之陋习展播 关于数据库的 高分求教 急 招骋软件开发人员 如何调用一个存储过程? heritrix网页登陆后设置选项无MirrorWriterProcessor只有默认的ARCWriterProcessor,且不可修改添加 微信像这种发消息的,是用的C/S结构还是B/S结构?
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;public class UpServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public UpServlet() {
super();
} protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获得磁盘文件条目工厂
DiskFileItemFactory factory = new DiskFileItemFactory();
//获取文件需要上传到的路径
String path = request.getRealPath("/");
//String path = "D:"+File.separator;
System.out.println("path:"+path);
//如果没以下两行设置的话,上传大的 文件 会占用 很多内存,
//设置暂时存放的 存储室 , 这个存储室,可以和 最终存储文件 的目录不同
/**
* 原理 它是先存到 暂时存储室,然后在真正写到 对应目录的硬盘上,
* 按理来说 当上传一个文件时,其实是上传了两份,第一个是以 .tem 格式的
* 然后再将其真正写到 对应目录的硬盘上
*/
factory.setRepository(new File(path));
//设置 缓存的大小,当上传文件的容量超过该缓存时,直接放到 暂时存储室
factory.setSizeThreshold(1024*1024) ;
//高水平的API文件上传处理
ServletFileUpload upload = new ServletFileUpload(factory);
InputStream in = null;
OutputStream out = null;
//可以上传多个文件
try {
List<FileItem> list = (List<FileItem>)upload.parseRequest(request);
for(FileItem item:list){
System.out.println("isFormField:"+item.isFormField());
if(item.isFormField()){
//获取用户具体输入的字符串 ,名字起得挺好,因为表单提交过来的是 字符串类型的
String value = item.getString() ;
System.out.println("value:"+value);
}else{
/**
* 以下三步,主要获取 上传文件的名字
*/
//获取路径名
String value = item.getName() ;
//索引到最后一个反斜杠
int start = value.lastIndexOf("\\");
//截取 上传文件的 字符串名字,加1是 去掉反斜杠,
String filename = value.substring(start+1);
System.out.println("filename:"+filename);
//真正写到磁盘上
//它抛出的异常 用exception 捕捉
//item.write( new File(path,filename) );//第三方提供的
//手动写的
in = item.getInputStream();
File file = new File(path,filename);
if(file.exists()){
boolean deletefile = file.delete();
System.out.println("deletefile:"+deletefile);
}
out = new FileOutputStream(file);
int length = 0 ;
byte [] buf = new byte[1024] ;
System.out.println("获取上传文件的总共的容量:"+item.getSize());
// in.read(buf) 每次读到的数据存放在 buf 数组中
while( (length = in.read(buf) ) != -1)
{
//在 buf 数组中 取出数据 写到 (输出流)磁盘上
out.write(buf, 0, length);
}
}
}
} catch (FileUploadException e) {
e.printStackTrace();
}finally{
if(in!=null){
try{
in.close();
}catch(Exception e){
e.printStackTrace();
}
}
if(null!=out){
try{
out.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
} protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}}
这是个文件上传的servlet,用的是smartupload,jar包自己去网上下吧,上传文件的保存路径可以自己设