做的好看的网站高端h5网站开发
做的好看的网站,高端h5网站开发,wordpress段子,免费建站工具上回我们说了下文件下载的方式有哪些#xff0c;这次我们从不同的环境下简单来说说文件上传的方式有哪些。文件上传的方式Servlet2.5 方式Servlet3.0 方式SpringMVC 方式案例实操Servlet2.5 方式文件上传涉及到前台页面的编写和后台服务器端代码的编写#xff0c;前台发送文件…上回我们说了下文件下载的方式有哪些这次我们从不同的环境下简单来说说文件上传的方式有哪些。文件上传的方式Servlet2.5 方式Servlet3.0 方式SpringMVC 方式案例实操Servlet2.5 方式文件上传涉及到前台页面的编写和后台服务器端代码的编写前台发送文件后台接收并保存文件这才是一个完整的文件上传。1) 前台页面在做文件上传的时候会有一个上传文件的界面首先我们需要一个表单并且表单的请求方式为 POST其次我们的 form 表单的 enctype 必须设为”multipart/form-data”即 enctypemultipart/form-data 意思是设置表单的 MIME 编码。默认情况下这个编码格式是 ”application/x-www-form-urlencoded”不能用于文件上传只有使用了 multipart/form-data 才能完整地传递文件数据。上传文件文件2) 后台 commons-fileupload 的使用首先需要导入第三方jar包http://commons.apache.org/ 下载 commons-io 和 commons-fileupload 两个jar的资源。解压并导入到项目中。commons-fileupload.jar 是文件上传的核心包 commons-io.jar 是 fileupload 的依赖包同时又是一个工具包。介绍一下使用到的几个核心类DiskFileItemFactory – 设置磁盘空间保存临时文件。只是一个工具类ServletFileUpload – 文件上传的核心类此类接收 request并解析ServletFileUpload.parseRequest(request); – List 解析 request1、创建一个 DiskFileItemFactory 工厂类并制定临时文件和大小2、创建 ServletFileUpload 核心类接收临时文件做请求的转换3、通过 ServletFileUpload 类转换原始请求得到 FileItem 集合4、遍历集合中的各个元素并处理5、判断每个元素是否是普通表单项如果是则按照普通表单项处理6、如果不是普通表单项则是文件通过处理的方式进行处理(上传)public class UploadServlet extends HttpServlet {private static final long serialVersionUID 1L;protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// 设定编码可以获取中文文件名request.setCharacterEncoding(UTF-8);// 获取tomcat下的upload目录的路径String path getServletContext().getRealPath(/upload);// 临时文件目录String tempPath getServletContext().getRealPath(/temp);// 检查我们是否有文件上传请求// boolean isMultipart ServletFileUpload.isMultipartContent(req);// 1、声明DiskFileItemFactory工厂类用于在指定磁盘上设置一个临时目录DiskFileItemFactory disk new DiskFileItemFactory(1024 * 10, new File(tempPath));// 2、声明ServletFileUpload接收上面的临时文件。也可以默认值ServletFileUpload up new ServletFileUpload(disk);// 3、解析requesttry {List list up.parseRequest(request);if (list.size() 0) {for (FileItem file : list) {// 判断是否是普通的表单项if (file.isFormField()) {String fieldName file.getFieldName();// 中文乱码此时还需要指定获取数据的编码方式// String value file.getString();String value file.getString(UTF-8);System.out.println(fieldName value);} else { // 说明是一个文件// 获取文件本身的名称String fileName file.getName();System.out.println(file.getFieldName());// 处理文件名称fileName fileName.substring(fileName.lastIndexOf(\\) 1);System.out.println(old Name : fileName);// 修改名称String extName fileName.substring(fileName.lastIndexOf(.));String newName UUID.randomUUID().toString().replace(-, ) extName;// 保存新的名称并写出到新文件中file.write(new File(path / newName));System.out.println(文件名是 fileName);System.out.println(文件大小是 file.getSize());file.delete();}}}} catch (FileUploadException e) {e.printStackTrace();} catch (Exception e) {e.printStackTrace();}}}Servlet3.0 方式使用注解 MultipartConfig 将一个 Servlet 标识为支持文件上传。Servlet3.0 将 multipart/form-data 的 POST 请求封装成 Part通过 Part 对上传的文件进行操作。前台上传文件姓名文件后台WebServlet(/upload)MultipartConfigpublic class UploadServlet extends HttpServlet {private static final long serialVersionUID 1L;protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println(上传文件...);// 设置编码request.setCharacterEncoding(UTF-8);// 获取普通表单项参数String uname request.getParameter(uname);System.out.println(uname);// 上传文件// 得到part对象 request.getpart(name)name代表的是表单中file元素的name属性值Part part request.getPart(myfile);// 得到文件存放的路径String path request.getServletContext().getRealPath(/);// 得到文件名String fileName part.getSubmittedFileName();// 上传part.write(path fileName);}}SpringMVC 方式Pom 文件修改 添加 commons-fileupload 依赖commons-fileuploadcommons-fileupload1.3.2servlet-context.xml1048576004096FileControllerimport java.io.File;import java.io.IOException;import javax.servlet.http.HttpServletRequest;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.multipart.MultipartFile;import org.springframework.web.multipart.MultipartHttpServletRequest;import org.springframework.web.servlet.ModelAndView;Controllerpublic class FileController {RequestMapping(/uploadFile)public ModelAndView uploadFile(HttpServletRequest request){ModelAndView mvnew ModelAndView();mv.setViewName(result);MultipartHttpServletRequest mr(MultipartHttpServletRequest) request;MultipartFile multipartFile mr.getFile(file);String pathrequest.getSession().getServletContext().getRealPath(upload);System.out.println(path);if(null!multipartFile!multipartFile.isEmpty()){String fileNamemultipartFile.getOriginalFilename();try {multipartFile.transferTo(new File(path,fileName));mv.addObject(msg, 文件上传成功!);} catch (Exception e) {mv.addObject(msg, 上传失败!);e.printStackTrace();}}return mv;}}前台表单 提交扩展~MIMEMIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型。是设定某种扩展名的文件用一种应用程序来打开的方式类型当该扩展名文件被访问的时候浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名以及一些媒体文件打开方式。它是一个互联网标准扩展了电子邮件标准使其能够支持非ASCII字符文本非文本格式附件(二进制、声音、图像等)由多部分(multiple parts)组成的消息体包含非ASCII字符的头信息(Header information)。这个标准被定义在RFC 2045、RFC 2046、RFC 2047、RFC 2048、RFC 2049等RFC中。 MIME改善了由RFC 822转变而来的RFC 2822这些旧标准规定电子邮件标准并不允许在邮件消息中使用7位ASCII字符集以外的字符。正因如此一些非英语字符消息和二进制文件图像声音等非文字消息原本都不能在电子邮件中传输(MIME可以)。MIME规定了用于表示各种各样的数据类型的符号化方法。 此外在万维网中使用的HTTP协议中也使用了MIME的框架标准被扩展为互联网媒体类型。查看不同文件对应的 MIME 类型推荐大家一种方式以 Tomcat为例它下面的 web.xml 文件可以查看所有的MIME类型通过 Ctrl F 搜索快速找到你想知道的文件对应的 MIME 类型。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/90344.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!