zoukankan      html  css  js  c++  java
  • 使用commons-fileupload进行上传

    须要使用的包

    这两个包在Apache官网上能够下载得到

    commons-fileupload-1.3.1.jar是Apache的一个开源项目。废话不说直接说吧

    前段页面

    <form action="GetData" method="post" enctype="multipart/form-data">
    			输入网址或者文字:<input type="text" value="" name="text" /><br /> <input
    				type="file" value="上传" name="update" /> <br /> <input type="submit"
    				value="生成" id="bu" />
    		</form>

    注意 须要加上 

    enctype="multipart/form-data"

    使用的是servlet

    // 得到上传文件的保存文件夹,将上传的文件存放于WEB-INF文件夹下。不同意外界直接訪问,保证上传文件的安全
    		String savePath = this.getServletContext().getRealPath("/upload");
    		File file = new File(savePath);
    		// 推断上传文件的保存文件夹是否存在
    		if (!file.exists() && !file.isDirectory()) {
    			//文件夹不存在,须要创建");
    			file.mkdir();// 创建文件夹
    		}
    		try {
    			// 使用Apache文件上传组件处理文件上传步骤:
    			// 1、创建一个DiskFileItemFactory工厂
    			DiskFileItemFactory factory = new DiskFileItemFactory();
    			// 2、创建一个文件上传解析器
    			ServletFileUpload upload = new ServletFileUpload(factory);
    			// 解决上传文件名称的中文乱码
    			upload.setHeaderEncoding("UTF-8");
    			// 3、推断提交上来的数据是否是上传表单的数据
    			if (!ServletFileUpload.isMultipartContent(request)) {
    				return;
    			}
    			// 4、使用ServletFileUpload解析器解析上传数据,解析结果返回的是一个List<FileItem>集合,每个FileItem相应一个Form表单的输入项
    			List<FileItem> list = upload.parseRequest(request);	
    			String value = null;
    			String filename = null ;
    			for (FileItem item : list) {				
    				// 假设fileitem中封装的是普通输入项的数据
    				if (item.isFormField()) {
    					// 解决普通输入项的数据的中文乱码问题
    					value = item.getString("UTF-8");
    				
    				} else {// 假设fileitem中封装的是上传文件
    						// 得到上传的文件名称称。
    					filename = item.getName();
    					if (filename == null || filename.trim().equals("")) {
    						continue;
    					}
    					filename = filename.substring(filename.lastIndexOf("\") + 1);
    					// 获取item中的上传文件的输入流
    					InputStream in = item.getInputStream();
    					// 创建一个文件输出流
    					FileOutputStream out = new FileOutputStream(savePath + "\" + filename);
    					// 创建一个缓冲区
    					byte buffer[] = new byte[1024];
    					// 推断输入流中的数据是否已经读完的标识
    					int len = 0;
    					// 循环将输入流读入到缓冲区其中,(len=in.read(buffer))>0就表示in里面还有数据
    					while ((len = in.read(buffer)) > 0) {
    						// 使用FileOutputStream输出流将缓冲区的数据写入到指定的文件夹(savePath + "\"+ filename)其中
    						out.write(buffer, 0, len);
    					}
    					// 关闭输入流
    					in.close();
    					// 关闭输出流
    					out.close();
    					// 删除处理文件上传时生成的暂时文件
    					item.delete();
    				}
    			}
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    有凝视。基本就这样 欧克了

  • 相关阅读:
    维控PLC与电流变送器modbus通讯获取电流变送器数据
    openmv第一次调试
    电流变送器(互感器)
    物联网数据采集
    STM32编程环境配置(kile5)
    开发日记9
    开发日记8
    开发日记7
    开发日记6
    开发日记5
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/5054104.html
Copyright © 2011-2022 走看看