资源简介
ajax上传项目,不需要表单和设置表单二级制数据传输,直接选择文件就异步上传了,绝对靠谱,也可融合与自己的项目里面去,简单易操作,看了基本都明白。
代码片段和文件信息
package control;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;
import java.util.List;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
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;
import entity.MyFileInfo;
/**
*
* 文件上传 具体步骤:
* 1)获得磁盘文件条目工厂 DiskFileItemFactory 要导包
* 2) 利用 request 获取真实路径,供临时文件存储,和 最终文件存储 ,这两个存储位置可不同,也可相同
* 3)对 DiskFileItemFactory 对象设置一些 属性
* 4)高水平的API文件上传处理 ServletFileUpload upload = newServletFileUpload(factory);目的是调用 parseRequest(request)方法 获得 FileItem 集合list ,
* 5)在 FileItem 对象中 获取信息, 遍历, 判断 表单提交过来的信息 是否是 普通文本信息 另做处理
* 6) 第一种. 用第三方提供的item.write( new File(pathfilename) ); 直接写到磁盘上 第二种. 手动处理
*
*/
public class UploadFileServlet extends HttpServlet {
// 文件信息
private static MyFileInfo myFileInfo = null;
private static final long serialVersionUID = 1L;
// 保存文件的目录
private static String PATH_FOLDER = “/“;
// 存放临时文件的目录
private static String TEMP_FOLDER = “/“;
@Override
public void init(ServletConfig config) throws ServletException {
ServletContext servletCtx = config.getServletContext();
// 初始化路径
// 保存文件的目录
PATH_FOLDER = servletCtx.getRealPath(“/upload“);
// 存放临时文件的目录存放xxx.tmp文件的目录
TEMP_FOLDER = servletCtx.getRealPath(“/uploadTemp“);
}
protected void doGet(HttpServletRequest request HttpServletResponse response)
throws ServletException IOException {
request.setCharacterEncoding(“GBK“); // 设置编码
response.setCharacterEncoding(“GBK“);
response.setContentType(“text/html;charset=GBK“);
// 获得磁盘文件条目工厂
DiskFileItemFactory factory = new DiskFileItemFactory();
// 如果没以下两行设置的话,上传大的 文件 会占用 很多内存,
// 设置暂时存放的 存储室 这个存储室,可以和 最终存储文件 的目录不同
/**
* 原理 它是先存到 暂时存储室,然后在真正写到 对应目录的硬盘上, 按理来说 当上传一个文件时,其实是上传了两份,第一个是以 .tem
* 格式的 然后再将其真正写到 对应目录的硬盘上
*/
factory.setRepository(new File(TEMP_FOLDER));
// 设置 缓存的大小,当上传文件的容量超过该缓存时,直接放到 暂时存储室
factory.setSizeThreshold(1024 * 1024);
// 高水平的API文件上传处理
ServletFileUpload upload = new ServletFileUpload(factory);
try {
// 提交上来的信息都在这个list里面
// 这意味着可以上传多个文件
// 请自行组织代码
List list = upload.parseRequest(request);
// 获取上传的文件
FileItem item = getUploadFileItem(list);
// 获取文件名
String filename = getUploadFileName(item);
// 保存后的文件名
String saveName = new Date().getTime() + filename.substring(filename.lastIndexOf(“.“));
// 保存后图片的浏览器访问路径
String fileUrl = request.getScheme() + “://“ + request.getServerName() + “:“ + request.getServerPort()
+ request.getContextPath() + “/upload/“ + saveName;
System.out.printl
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 841 2017-08-19 14:18 AjaxUploadFile\.classpath
文件 1106 2017-08-19 14:47 AjaxUploadFile\.project
文件 567 2017-08-19 14:18 AjaxUploadFile\.settings\.jsdtscope
文件 364 2017-08-19 14:18 AjaxUploadFile\.settings\org.eclipse.jdt.core.prefs
文件 494 2017-08-19 14:18 AjaxUploadFile\.settings\org.eclipse.wst.common.component
文件 345 2017-08-19 14:18 AjaxUploadFile\.settings\org.eclipse.wst.common.project.facet.core.xm
文件 49 2017-08-19 14:18 AjaxUploadFile\.settings\org.eclipse.wst.jsdt.ui.superType.container
文件 6 2017-08-19 14:18 AjaxUploadFile\.settings\org.eclipse.wst.jsdt.ui.superType.name
文件 374 2017-08-19 14:47 AjaxUploadFile\.tomcatplugin
文件 5837 2017-08-19 15:34 AjaxUploadFile\build\classes\control\UploadFileServlet.class
文件 1828 2017-08-19 15:23 AjaxUploadFile\build\classes\entity\MyFileInfo.class
文件 5121 2017-08-19 15:34 AjaxUploadFile\src\control\UploadFileServlet.java
文件 1343 2017-08-19 15:23 AjaxUploadFile\src\entity\MyFileInfo.java
文件 93871 2017-08-19 14:37 AjaxUploadFile\WebContent\js\ajaxjquery.js
文件 25773 2017-08-19 14:37 AjaxUploadFile\WebContent\js\ajaxupload.js
文件 79209 2017-08-19 15:01 AjaxUploadFile\WebContent\js\jquery-1.4.2.min.js
文件 578 2017-08-19 15:20 AjaxUploadFile\WebContent\js\myfileupload.js
文件 39 2017-08-19 14:18 AjaxUploadFile\WebContent\me
文件 937 2017-08-19 15:49 AjaxUploadFile\WebContent\uploadFile.jsp
文件 68622 2017-08-19 14:24 AjaxUploadFile\WebContent\WEB-INF\lib\commons-fileupload-1.3.jar
文件 83613 2017-08-19 14:58 AjaxUploadFile\WebContent\WEB-INF\lib\commons-io-1.3.1.jar
文件 423 2017-08-19 14:46 AjaxUploadFile\WebContent\WEB-INF\web.xm
目录 0 2017-08-19 15:53 AjaxUploadFile\build\classes\control
目录 0 2017-08-19 15:53 AjaxUploadFile\build\classes\entity
目录 0 2017-08-19 15:53 AjaxUploadFile\WebContent\WEB-INF\lib
目录 0 2017-08-19 15:53 AjaxUploadFile\build\classes
目录 0 2017-08-19 15:53 AjaxUploadFile\src\control
目录 0 2017-08-19 15:53 AjaxUploadFile\src\entity
目录 0 2017-08-19 15:53 AjaxUploadFile\WebContent\js
目录 0 2017-08-19 15:53 AjaxUploadFile\WebContent\me
............此处省略12个文件信息
- 上一篇:基于多通信半径的dv-hop改进算法
- 下一篇:三菱伺服电机位置模式接线图
评论
共有 条评论