java html 文件上传_html5+java大文件上传代码

οnchange="onfile(this)">

var xhr;

function onfile(file) {

var fd = new FormData();

fd.append("fileToUpload", document.getElementById('fileid').files[0]);

xhr = new XMLHttpRequest();

xhr.open("POST", "http://localhost:8889/TestUp/upservlet");

//xhr.setRequestHeader("Content-Type","charset=UTF-8");

xhr.send(fd);

xhr.onreadystatechange = proce***esponse;

}

function proce***esponse(){

if(xhr.readyState == 4){

alert("上传结束数据流结束");

if(xhr.status == 200){

var infor = xhr.responseText;

alert("服务器端的响应 = "+infor);

}

}

}

package com.yjm.up;

import java.io.File;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.util.List;

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.disk.DiskFileItemFactory;

import org.apache.commons.fileupload.servlet.ServletFileUpload;

public class UpServlet extends HttpServlet {

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

// 得到上传文件的保存目录,将上传的文件存放于WEB-INF目录下,不允许外界直接访问,保证上传文件的安全

String savePath = this.getServletContext().getRealPath(

"/WEB-INF/upload");

File file = new File(savePath);

System.out.println("test。。。。");

// 判断上传文件的保存目录是否存在

if (!file.exists() && !file.isDirectory()) {

System.out.println(savePath + "目录不存在,需要创建");

// 创建目录

file.mkdir();

}

// 消息提示

String message = "";

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对应一个Form表单的输入项

List list = upload.parseRequest(request);

for (FileItem item : list) {

// 如果fileitem中封装的是普通输入项的数据

if (item.isFormField()) {

String name = item.getFieldName();

// 解决普通输入项的数据的中文乱码问题

String value = item.getString("UTF-8");

// value = new String(value.getBytes("iso8859-1"),"UTF-8");

System.out.println(name + "=" + value);

} else {// 如果fileitem中封装的是上传文件

// 得到上传的文件名称,

String filename = item.getName();

System.out.println(filename);

if (filename == null || filename.trim().equals("")) {

continue;

}

// 注意:不同的浏览器提交的文件名是不一样的,有些浏览器提交上来的文件名是带有路径的,如:

// c:\a\b\1.txt,而有些只是单纯的文件名,如:1.txt

// 处理获取到的上传文件的文件名的路径部分,只保留文件名部分

filename = filename

.substring(filename.lastIndexOf("\\") + 1);

// 获取item中的上传文件的输入流

InputStream in = item.getInputStream();

// 创建一个文件输出流

FileOutputStream out = new FileOutputStream(savePath + "\\"

+ filename);

// 创建一个缓冲区

byte buffer[] = new byte[1024 * 1024];

// 判断输入流中的数据是否已经读完的标识

int len = 0;

// 循环将输入流读入到缓冲区当中,(len=in.read(buffer))>0就表示in里面还有数据

while ((len = in.read(buffer)) > 0) {

// 使用FileOutputStream输出流将缓冲区的数据写入到指定的目录(savePath + "\\"

// + filename)当中

out.write(buffer, 0, len);

}

out.flush();

// 关闭输入流

in.close();

// 关闭输出流

out.close();

// 删除处理文件上传时生成的临时文件

item.delete();

message = "文件上传成功!";

}

}

} catch (Exception e) {

message = "文件上传失败!";

e.printStackTrace();

}

request.setAttribute("message", message);

request.getRequestDispatcher("/message.jsp").forward(request, response);

}

}

用到的java 包 是 超过1G上传

commons-fileupload-1.2.1.jar

commons-io-1.3.2.jar

//xhr.setRequestHeader("Content-Type","application/octet-stream;charset=UTF-8");

这不能添加

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值