做挂网站万网 安装wordpress
做挂网站,万网 安装wordpress,做网站 域名如何要回,西安网站建设建站系统项目代码 https://github.com/yinhai1114/JavaWeb_LearningCode/tree/main/fileupdown 目录 文件上传
一、基本介绍
二、文件上传的基本原理
编辑
三、文件上传应用实例
四、文件上传的注意细节
1.解决中文乱码问题
2.分割文件夹
3.防止重名
4.百度WebUploader
5.空… 项目代码 https://github.com/yinhai1114/JavaWeb_LearningCode/tree/main/fileupdown 目录 文件上传
一、基本介绍
二、文件上传的基本原理
编辑
三、文件上传应用实例
四、文件上传的注意细节
1.解决中文乱码问题
2.分割文件夹
3.防止重名
4.百度WebUploader
5.空目录构建问题
文件下载
一、文件下载原理分析
二、文件下载案例
三、文件下载注意事项细节 文件上传
一、基本介绍
1.文件的上传和下载是常见的功能。
2.后面项目就使用了文件上传下载。
3.如果是传输大文件一般用专门工具或者插件
4.文件上传下载需要使用到两个包,需要导入
二、文件上传的基本原理 最后http请求走到servlet 三、文件上传应用实例 四、文件上传的注意细节
1.解决中文乱码问题 //解决接收到文件名是中文乱码问题servletFileUpload.setHeaderEncoding(utf-8);
2.分割文件夹 //
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//package com.yinhai.utils;import java.time.LocalDateTime;public class WebUtils {public WebUtils() {}public static String getYearMonthDay() {LocalDateTime ldt LocalDateTime.now();int year ldt.getYear();int monthValue ldt.getMonthValue();int dayOfMonth ldt.getDayOfMonth();String yearMonthDay year - monthValue - dayOfMonth /;System.out.println(yearMonthDay);return yearMonthDay;}
}在创建目录的时候调用工具类返回日期 3.防止重名 //4. 将文件拷贝到fileRealPathDirectory目录
// 构建一个上传文件的完整路径 目录文件名
// 对上传的文件名进行处理, 前面增加一个前缀保证是唯一即可, 不错
name UUID.randomUUID().toString() _ System.currentTimeMillis() _ name;
String fileFullPath fileRealPathDirectory / name;
fileItem.write(new File(fileFullPath));4.百度WebUploader
一个完美的文件上传要考虑的因素很多比如断点续传、控制图片大小尺寸分片上传防止恶意上传等在项目中可以考虑使用WebUploader组件(百度开发)WebUploader API文档 - Web Uploader
5.空目录构建问题
文件上传创建web/upload的文件夹在tomcat启动时没有在out目录下创建对应的upload文件夹原因是tomcat对应空目录是不会在out下创建相应目录的所以只需在upload目录下放一个文件即可这个是Idea Tomcat的问题实际开发不会存在
6.多文件上传改变一下前端页面即可数组是会默认拿出来的 文件下载
一、文件下载原理分析 二、文件下载案例
downloadServlet
package com.yinhai.servlet;import com.sun.org.apache.bcel.internal.generic.NEW;
import com.yinhai.utils.WebUtils;
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 javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.UUID;/*** author 银小海* version 1.0* email yinhai14qq.com*/
WebServlet(name FileUploadServlet,urlPatterns /fileUpload)
public class FileUploadServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println(be invoked...);//1.判断是不是文件表单(enctype“multipart/form-data”)if(ServletFileUpload.isMultipartContent(request)){System.out.println(OK! this is fileUpload!!!);//2. 创建 DiskFileItemFactory 对象, 用于构建一个解析上传数据的工具对象DiskFileItemFactory diskFileItemFactory new DiskFileItemFactory();//3. 创建一个解析上传数据的工具对象/*** 表单提交的数据就是 input 元素* input typefile namepic id value2xxx.jpg onchangeprev(this)/* 家居名: input typetext namenamebr/* input typesubmit value上传/*/ServletFileUpload servletFileUpload new ServletFileUpload(diskFileItemFactory);//解决接收到文件名是中文乱码问题servletFileUpload.setHeaderEncoding(utf-8);//4. 关键的地方, servletFileUpload 对象可以把表单提交的数据text/文件// 将其封装到 FileItem 文件项中// 如果我们不知道一个对象是什么结构[1.输出 2.debug 3. 底层自动看到]try {ListFileItem list servletFileUpload.parseRequest(request);System.out.println(list list);/*list[nameMIKU.jpg,StoreLocationC:\Users\64301\Desktop\JAVA\apache-tomcat-8.0.50\temp\ upload_32df8824_18ca62f4c87__7f5a_00000000.tmp,size294099bytes, isFormFieldfalse, FieldNamepic,namenull,StoreLocationC:\Users\64301\Desktop\JAVA\apache-tomcat-8.0.50\temp\ upload_32df8824_18ca62f4c87__7f5a_00000001.tmp,size0bytes, isFormFieldtrue, FieldNamename]*///遍历并分别处理for (FileItem fileItem : list) {//System.out.println(fileItem fileItem);//判断是不是一个文本 你是OOP程序员if (fileItem.isFormField()) {//如果是true就是文本 input textString name fileItem.getString(utf-8);// String name fileItem.getName();System.out.println(输入的名字 name);} else {//是一个文件//用一个方法//获取上传的文件的名字String name fileItem.getName();System.out.println(上传的文件名 name);//把这个上传到 服务器的 temp下的文件保存到你指定的目录//1.指定一个目录 , 就是我们网站工作目录下String filePath /upload/;//2.获取到完整目录//C:\Users\64301\Desktop\JAVA\code\JavaWeb_LearningCode\out\artifacts\fileupdown_war_exploded\ upload\String fileRealPath request.getServletContext().getRealPath(filePath) WebUtils.getYearMonthDay();System.out.println(fileRealPath);//3. 创建这个上传的目录 创建目录 Java基础// 一个工具类可以返回 /2024-11-11/ 字符串File fileRealPathDirectory new File(fileRealPath);if(!fileRealPathDirectory.exists()){//不存在就创建boolean mkdirs fileRealPathDirectory.mkdirs();System.out.println(创建文件夹 mkdirs);}//4. 将文件拷贝到fileRealPathDirectory目录// 构建一个上传文件的完整路径 目录文件名// 对上传的文件名进行处理, 前面增加一个前缀保证是唯一即可, 不错name UUID.randomUUID().toString() _ System.currentTimeMillis() _ name;String fileFullPath fileRealPathDirectory / name;fileItem.write(new File(fileFullPath));//5. 提示信息response.setContentType(text/html;charsetutf-8);response.getWriter().write(上传成功~);}}} catch (Exception e) {e.printStackTrace();}}else{System.out.println(Dont fileUpload...);}}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request,response);}
}download.JSP
%--Created by IntelliJ IDEA.User: 银小海Date: 2023/12/26 Time: 22:32To change this template use File | Settings | File Templates.
--%
% page contentTypetext/html;charsetUTF-8 languagejava %
!DOCTYPE html
html langen
headmeta charsetUTF-8title文件下载/titlebase href%request.getContextPath()/%
/head
body
h1文件下载/h1
a hreffileDownload?nameMiku.jpg点击下载Miku.jpg/abr/br/
a hreffileDownload?nameRem.png点击下载 Rem.png/abr/br/
%--a hreffileDownload?name高山流水.mp3点击下载 高山流水.mp3/abr/br/--%
/body
/html 三、文件下载注意事项细节
1.文件下载比较麻烦的就是文件名中文处理 if (request.getHeader(User-Agent).contains(Firefox)) {// 火狐 Base64编码response.setHeader(Content-Disposition, attachment; filename?UTF-8?B? new BASE64Encoder().encode(downLoadFileName.getBytes(UTF-8)) ?);} else {// 其他(主流ie/chrome)使用URL编码操作response.setHeader(Content-Disposition, attachment; filename URLEncoder.encode(downLoadFileName, UTF-8));}
2.因此老师在代码中针对不同浏览器做了处理
3.对于网站的文件很多文件使用另存为即可下载对于大文件(文档视频)会使用专业的下载工具(迅雷、百度)
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/90958.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!