文件上传

注:文件上传需要借助第三方jar包!!!

commons-fileupload-1.2.2.jar
commons-io-2.0.1.jar


package cn.fileUpload;


import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.util.List;
import java.util.UUID;


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.ProgressListener;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;


public class UpServlet extends HttpServlet {


public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//设置文件名中文乱码
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
PrintWriter print = response.getWriter();

try {
//得到上传文件的真实路径
String path = getServletContext().getRealPath("/WEB-INF/file");

//设置环境
DiskFileItemFactory factory = new DiskFileItemFactory();
 
//设置临时存放目录,该目录放在WEB-INF下面
factory.setRepository(new File(getServletContext().getRealPath("/WEB-INF/temp")));

//判断from是不是enctype=multipart/from-date,得到一个Boolean值
boolean isMun = ServletFileUpload.isMultipartContent(request);
if(!isMun){
print.write("请将enctype设置为multipart/from-date");
return;
}

//得到servletFileLoad核心类
ServletFileUpload upload = new ServletFileUpload(factory);

//通过这个类可以拿到文件的进度(具体显示到页面需要Ajax来实现):为一接口,通过匿名内部类实现里面的方法
upload.setProgressListener(new ProgressListener() {
@Override
public void update(long pBytesRead, long pContentLength, int pItems) {
//pBytesRead:当前已读到的字节数,pContentLength:文件的长度,pItems:第几项
System.out.println("已读取:"+pBytesRead+",文件大小:"+pContentLength+",第几项:"+pItems);
}
});

//设置单个文件夹上传的大小
upload.setFileSizeMax(4*1024*1024);
//设置总文件大小不的超过6M
upload.setSizeMax(6*1024*1024);

//解析(相当于拿到了所有的东东)
List<FileItem> item = upload.parseRequest(request);

//打印出内容
for(FileItem i : item){
//判断某项是否是普通的表单类型。
if(i.isFormField()){
//普通字段
String fileName = i.getFieldName();
//设置中文乱码,此处过滤器不管用
String fileValue = i.getString("utf-8");
System.out.println(fileName+"="+fileValue);
}else{
//得到MIME类型
String m = i.getContentType();
//控制上传文件的类型
if(m.startsWith("image")){
//上传字段(得到一个输入流,后面通过该流去读目的地的内容)
InputStream in = i.getInputStream();
//上传文件名(为jsp中文件一后面 的文件名)
String name = i.getName();
//判断文件名是否为空(防止在上传多个文件时,上传的是看哪个值)
if(name==null || "".equals(name.trim())){
continue;
}
name = name.substring(name.lastIndexOf("\\")+1);
//产生一个唯一的id值
name = UUID.randomUUID()+"_"+name;
//构建输出流,得到要写到那个文件的路径
String filePath = path+"\\"+name;
//向filePath文件中写入数据
OutputStream out = new FileOutputStream(filePath);
//这样就代表写到文件的末尾处
// OutputStream out = new FileOutputStream(filePath,true);

byte[] b = new byte[1024];
int len = -1;
while((len=in.read(b))!=-1){
out.write(b, 0, len);
}
out.close();
in.close();
//删除临时文件(必须在关闭流之后执行)
i.delete();
}else{
print.write("请上传图片");
}
}
}
} catch (org.apache.commons.fileupload.FileUploadBase.FileSizeLimitExceededException e) {
print.write("文件不能超过4M");
} catch (org.apache.commons.fileupload.FileUploadBase.SizeLimitExceededException e) {
print.write("总文件不能超过6M"); 
} catch (Exception e) {
throw new RuntimeException(e);
}
}


public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);


}


}












基于SSM框架的智能家政保洁预约系统,是一个旨在提高家政保洁服务预约效率和管理水平的平台。该系统通过集成现代信息技术,为家政公司、家政服务人员和消费者提供了一个便捷的在线预约和管理系统。 系统的主要功能包括: 1. **用户管理**:允许消费者注册、登录,并管理他们的个人资料和预约历史。 2. **家政人员管理**:家政服务人员可以注册并更新自己的个人信息、服务类别和服务时间。 3. **服务预约**:消费者可以浏览不同的家政服务选项,选择合适的服务人员,并在线预约服务。 4. **订单管理**:系统支持订单的创建、跟踪和管理,包括订单的确认、完成和评价。 5. **评价系统**:消费者可以在家政服务完成后对服务进行评价,帮助提高服务质量和透明度。 6. **后台管理**:管理员可以管理用户、家政人员信息、服务类别、预约订单以及处理用户反馈。 系统采用Java语言开发,使用MySQL数据库进行数据存储,通过B/S架构实现用户与服务的在线交互。系统设计考虑了不同用户角色的需求,包括管理员、家政服务人员和普通用户,每个角色都有相应的权限和功能。此外,系统还采用了软件组件化、精化体系结构、分离逻辑和数据等方法,以便于未来的系统升级和维护。 智能家政保洁预约系统通过提供一个集中的平台,不仅方便了消费者的预约和管理,也为家政服务人员提供了一个展示和推广自己服务的机会。同时,系统的后台管理功能为家政公司提供了强大的数据支持和决策辅助,有助于提高服务质量和管理效率。该系统的设计与实现,标志着家政保洁服务向现代化和网络化的转型,为管理决策和控制提供保障,是行业发展中的重要里程碑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值