java 上传方法_Java实现文件上传的方法

2023-10-27

本文实例为大家分享了java实现文件上传的具体代码,具体内容如下

1、java代码:

package com.github.reston.servlet;

import java.io.file;

import java.io.fileoutputstream;

import java.io.ioexception;

import java.io.printwriter;

import java.util.iterator;

import java.util.list;

import javax.servlet.servletconfig;

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 org.apache.commons.fileupload.fileitem;

import org.apache.commons.fileupload.fileitemfactory;

import org.apache.commons.fileupload.disk.diskfileitemfactory;

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

import org.apache.commons.io.ioutils;

@webservlet("/ajaxupload")

public class ajaxupload extends httpservlet{

@override

public void init(servletconfig config) throws servletexception{

// todo auto-generated method stub

super.init(config);

}

@override

protected void service(httpservletrequest request,httpservletresponse response) throws servletexception,ioexception{

response.setcontenttype("text/html");

request.setcharacterencoding("utf-8");

boolean ismultipart=servletfileupload.ismultipartcontent(request);

string basepath=getservletcontext().getrealpath("/upload");

file basedirectory=new file(basepath);

string filename="";

long start=0;

if(!basedirectory.isdirectory()) basedirectory.mkdirs();

if(ismultipart){

try{

fileitemfactory factory=new diskfileitemfactory();

servletfileupload upload=new servletfileupload(factory);

@suppresswarnings("unchecked") list fileitems=upload.parserequest(request);

for(fileitem i:fileitems){

if(i.isformfield()){

string name=i.getfieldname();

string value=i.getstring();

if(name.equals("start"))start=long.parselong(i.getstring());

}

}

for(fileitem item:fileitems){

if(item.isformfield()) continue;

filename=item.getfieldname();

if(mkdir(basepath)){

file fileonserver=createfile(basepath,filename);

if(fileonserver.length()==0){

fileoutputstream fos=new fileoutputstream(fileonserver,true);

ioutils.copy(item.getinputstream(),fos);

}

if(start>0){

fileoutputstream fos=new fileoutputstream(fileonserver,true);

ioutils.copy(item.getinputstream(),fos);

}

printwriter pw=response.getwriter();

pw.write("{\"length\":\""+fileonserver.length()+"\"}");

pw.flush();

}

}

}catch(exception e){

}

}

}

private file createfile(string path,string name) throws ioexception{

file tmp=new file(path,name);

if(!tmp.exists()){

tmp.createnewfile();

}

return tmp;

}

private boolean mkdir(string path){

boolean result=true;

file tmp=new file(path);

if(!tmp.isdirectory()){

result=tmp.mkdirs();

}

return result;

}

}

2、java代码:

var ajaxupload = function(e) {

/**

* e url method data success error

*/

var xmlhttprequest;

if (window.xmlhttprequest) {

xmlhttprequest = new xmlhttprequest();

if (xmlhttprequest.overridemimetype) {

xmlhttprequest.overridemimetype("text/xml");

}

} else if (window.activexobject) {

var activename = [ "msxml2.xmlhttp", "microsoft.xmlhttp" ];

for (var i = 0; i < activename.length; i++) {

try {

xmlhttprequest = new activexobject(activename[i]);

break;

} catch (e) {

return;

}

}

}

if (xmlhttprequest == undefined || xmlhttprequest == null) {

alert("xmlhttprequest对象创建失败!!");

return;

} else {

this.xmlhttp = xmlhttprequest;

}

var file = document.getelementbyid(e.id);

if (this.xmlhttp != undefined && this.xmlhttp != null) {

e.method = e.method.touppercase();

if (e.method != "get" && e.method != "post") {

alert("http的请求方法必须为get或post!!!");

return;

}

if (e.url == null || e.url == undefined) {

e.alert("http的请求地址必须设置!");

return;

}

}

this.xmlhttp.onreadystatechange = function() {

if (this.readystate == 4) {

if (this.status == 200) {

var responsetext = this.responsetext;

var responsexml = this.reponsexml;

if (e.success == undefined || e.success == null) {

alert("没有设置处理数据正确返回的方法");

alert("返回的数据:" + responsetext);

} else {

e.success(responsetext, responsexml);

}

} else {

if (e.error == undefined || e.error == null) {

alert("没有设置处理数据返回失败的处理方法!");

alert("http的响应码:" + this.status + ",响应码的文本信息:" + this.statustext);

} else {

e.error(this.status, this.statustext);

}

}

}

}

// var formhtm="

";

var filename = getfilename(e.id);

this.xmlhttp.open(e.method, e.url, true);

var data = new formdata(document.getelementbyid("output"));

data.append("name", filename);

data.append("start", e.data.start);

data.append(filename, document.getelementbyid(e.id).files[0].slice(e.data.start, getfilesize(e.id)));

this.xmlhttp.send(data);

}

function getfilename(id) {

var path = document.getelementbyid(id).value

var pos1 = path.lastindexof('/');

var pos2 = path.lastindexof('\\');

var pos = math.max(pos1, pos2);

return path.substring(pos + 1);

}

function getfilesize(id) {

return document.getelementbyid(id).files[0].size;

}

3、html代码:

请选择要上传的文件(小于1g)

function test(){

ajaxupload({

id : "upload",

url : "/pcc/reston/ajaxupload",

method : "post",

data : {start:0},

success : function(e) {

var l=json.parse(e).length;

ajaxupload({

id : "upload",

url : "/pcc/reston/ajaxupload",

method : "post",

data : {start:l},

success : function(e) {

},

error : function(e) {

console.log(e);

}

});

},

error : function(e) {

console.log(e);

}

});

}

以上就是本文的全部内容,希望对大家学习java程序设计有所帮助。

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java 上传方法_Java实现文件上传的方法 的相关文章

  • 百度群组链接分享 - 铁人圈子

    百度网盘群组链接分享 铁人圈子 铁人圈子 tierenpan com 是一个分享百度网盘群组的发布平台 可以在铁人圈子上实时分享你的群组链接 并且和其他网友互动交流分享资源 群组分享 百度群组链接分享 地址 https www tieren
  • shape文件格式简单说明

    一 简介 ShapeFile是Esri开发的一种空间数据格式 她是一种矢量数据存储格式 通常用于描述几何体形状 点 线 面 及相关属性 二 组成说明 2 1 必须文件 shp 图形格式 用于描述几何体形状 shx 图形索引格式 记录每一个几
  • 一文带你彻底搞懂二叉树(Python实现)——真香

    文章目录 前言 树 树中的一些术语 树的分类 树的存储表示 二叉树 二叉树的性质 二叉树的实现 二叉树结点的实现 二叉树的创建 广度优先遍历 先序 中序 后序遍历 后记 前言 终于到了数据结构中的关键部分了 二叉树 说起二叉树啊 简直是我当
  • PTA 浙大版《C语言程序设计(第4版)》题目集 习题4-6 水仙花数

    原题链接 问题描述 水仙花数是指一个N位正整数 N 3 它的每个位上的数字的N次幂之和等于它本身 例如 153 13 53 33 本题要求编写程序 计算所有N位水仙花数 输入格式 输入在一行中给出一个正整数N 3 N 7 输出格式 按递增顺
  • abp Application层获取请求的Header内容

    abp 如何在应用层返回header自定义的内容 参考 https blog csdn net u012659600 article details 99579369 首先在AppService中注入HttpContextAccessor
  • Ubuntu 更新 CMake 版本

    项目中有时候会出现CMake版本小于最低要求的情况 实际上没有有必要这么高的要求 但是在不能改对方代码的情况下 只能去升级自身的版本了 尝试了网上说的直接update之后再次安装的方式 结果版本号没有改变 sudo apt get upda
  • css文字超出隐藏显示...

    单行 overflow hidden white space nowrap text overflow ellipsis 多行 display webkit box webkit box orient vertical webkit lin
  • Windows10开启Hyper-v并安装Linux CentOS虚拟机

    Windows10开启Hyper v虚拟机配置静态网络 1 Windows10 开启Hyper v 右键单击 Windows 按钮并选择 应用和功能 选择相关设置下右侧的 程序和功能 选择 打开或关闭 Windows 功能 选择 Hyper
  • Element 标签页样式修改

    deep el tabs nav wrap after height 1px deep el tabs item height 50px font size 16px font family PingFang SC font weight
  • Java编程实现Softmax函数功能

    Java编程实现Softmax函数功能 Softmax函数是一种常用的数学函数 广泛应用于机器学习和深度学习领域 尤其在分类问题中起到重要作用 本文将介绍如何使用Java编程实现Softmax函数 并提供相应的源代码 首先 我们来了解一下S
  • centos7启动docker: dial tcp 104.18.123.25:443: i/o timeout.

    在centos7上安装好了docker之后 测试docker是否安装成功 使用官方给出的sudo docker run hello world 解决 再运行一遍命令即可
  • 自定义 scrollview 标头部分的滑动速度慢(scrollview 子控件滑动速度不一致)

    scrollview 子控件滑动速度不一致 先来个布局图 向上滑动时 图片向上划出的速度较下面的蓝色view慢 现在我们先来看布局文件
  • 基于tensorflow的手势检测和手势识别分类

    项目目的 在手机端实现用户手势的检测并且识别用户所做的手势 遇到的问题 首先在手部检测的解决办法中 我尝试过用opencv进行手部识别 但存在的问题是背景对手的识别的影响太大 如果采用颜色进行手和背景的区分的话 又会受到光照等影响 总体而言
  • 【机器学习实战】决策树 python代码实现

    typora copy images to upload 第三章 决策树 3 1决策树的构造 优点 计算复杂度不高 输出结果易于理解 对中间值的缺失不敏感 可以处理不相关的特征数据 缺点 可能会产生过度匹配的问题 适用数据类型 数据型和标称
  • 弱网的概念以及弱网测试

    什么是弱网测试 在当今移动互联网盛行的时代 网络的形态除了有线连接 还有2G 3G Edge 4G Wifi等多种手机网络连接方式 不同的协议 不同的制式 不同的速率 使移动应用运行的场景更加丰富 从测试角度来说 需要额外关注的场景就远不止
  • SpringBoot日志配置【详解】

    文章目录 前言 1 为什么使用Logback 2 Logback使用 2 1 添加依赖 2 2 默认配置 3 logback spring xml详解 3 1 configuration元素 3 2 logger 元素 3 3 root 元
  • 购物商城---页面缓存oscached

    流程图 web xml
  • VC++使用HOOK API 屏蔽PrintScreen键截屏以及QQ和微信默认热键截屏

    转载 http blog csdn net easysec article details 8833457 转载 http www vckbase com module articleContent php id 567 title 用VS
  • 离线安装Docker镜像

    部分线上服务器无法连接公网 或者服务器下载镜像比较慢 遇到这种情况要怎么解决 我们可以在联网的本机或服务器上 将已经下载好的镜像导出 然后导入到没有网络的服务器上 通过Docker加载 例如 这里有一个镜像grafana loki 2 2

随机推荐

  • 订单系统开发

    一 订单系统基本框架的搭建 1 创建maven工程 pom xml文件内容如下
  • WSA with Magisk Root安装配置教程(2023.5)

    前言 最近正式走上了安卓逆向的道路 刚开始尝试了各种模拟器 雷电 夜神 及其海外版 并且安装配置了多次magisk 倒不是说这些模拟器的体验有多差 主要还是不能与 Windows Hype V 共存导致无法使用 WSL 这点让我无法接受 s
  • markdown语法最全汇总

    一 markdown简介 注 如果对markdown有一定了解 可以略过此处 第一章主要对markdown基础知识做个补充 摘自菜鸟教程此处原文档 博客原地址 欢迎收藏访问 1 1 markdown背景 1 markdown是一种轻量级标记
  • 一枚芯片的实际成本是多少?(1)

    芯片的硬件成本构成 芯片的成本包括芯片的硬件成本和芯片的设计成本 芯片硬件成本包括晶片成本 掩膜成本 测试成本 封装成本四部分 像ARM阵营的IC设计公司要支付给ARM设计研发费以及每一片芯片的版税 但笔者这里主要描述自主CPU和Intel
  • shiny教程一 -- shiny入门

    Shiny是一个R软件包 可轻松从R直接构建交互式Web应用程序 本课程将使您立即开始构建Shiny应用程序 如果还未安装Shiny软件包 打开R会话窗 确保联网状态 然后运行 install packages shiny Shiny软件包
  • vue 中click.stop的用法

    click stop 阻止点击事件继续传播 场景 在table中使用 点击当前行 当前行被勾选 但是点击当前行中按钮或点击事件时 使用此方法 则在触发当前点击事件后 阻止行的选中事件 使用 html
  • input“输入框”常见问题及解决方法

    1 ios中 输入框获得焦点时 页面输入框被遮盖 定位的元素位置错乱 当页input存在于吸顶或者吸底元素中时 用户点击输入框 输入法弹出后 fiexd失效 页面中定位好的元素随屏幕滚动 针对这个问题 我们一起来看下以下几种方案 方案一 W
  • FOXBORO FBM232 P0926GW 自动化控制模块

    Foxboro FBM232 P0926GW 是 Foxboro 福克斯博罗 自动化控制系统的一部分 通常用于监测和控制工业过程 以下是关于这种类型的自动化控制模块可能具有的一些常见功能 数字输入通道 FBM232 P0926GW 控制模块
  • 鸿蒙系统 服务器,鸿蒙开发之环境准备【1】-基于Deepin20操作系统的编译服务器环境搭建遇到的问题及解决方式...

    Hi3861 code 1 0 python build py wifiiot 196 197 ACTION vendor hisi hi3861 hi3861 run wifiiot scons build lite toolchain
  • vscode launch.json 常用配置

    Use IntelliSense to learn about possible attributes Hover to view descriptions of existing attributes For more informati
  • 毕业设计-基于机器视觉的智能安检系统设计 -OpenCV

    目录 前言 课题背景和意义 实现技术思路 一 智能安检机概述 二 嵌入式控制系统 三 图像处理模块设计 实现效果图样例 最后 前言 大四是整个大学期间最忙碌的时光 一边要忙着备考或实习为毕业后面临的就业升学做准备 一边要为毕业设计耗费大量精
  • Blender石头雕刻

    1 建立一个plane 选中一个点后ctrl I反选其他的点 然后删去 2 e挤出点 3 添加蒙皮skin修改器 4 全选所有点 ctrl a放大或缩小
  • Caffeine缓存不刷新问题

    一 先看问题代码 缓存管理器配置 import java util concurrent TimeUnit import org springframework cache CacheManager import org springfra
  • springboot同一个类里的方法之间调用事务不起作用

    今天在看项目代码的时候 发现在service层 有方法调用同类中的方法 SonarLint提示有bug 下图是我自己做测试时写的demo代码 经过测试发现 当A方法调用同类中带有 Transactional注解的B方法时 被 Transac
  • JVM学习笔记3:内存溢出的十个场景

    内存溢出的十个场景 JVM运行时首先需要类加载器 classLoader 加载所需类的字节码文件 加载完毕交由执行引擎执行 在执行过程中需要一段空间来存储数据 类比CPU与主存 这段内存空间的分配和释放过程正是我们需要关心的运行时数据区 内
  • 常见计算机英语,常见计算机英语词汇

    电脑 又称计算机 是机械的一种 现在使用的越来越多 接下来小编为大家整理了常见计算机英语词汇 希望对你有帮助哦 adder加法器 address地址 access arm磁头臂 存取臂 access time存取时间 alphanumeri
  • Java中的静态成员方法

    用static修饰的变量 方法叫静态成员 方法 属于整个类所有 而不是某个对象所有 即被类的所有对象所共享 静态成员可以使用类名直接访问 也可以使用对象名进行访问 Java中静态方法与非静态方法的区别 首先 两者本质上的区别是 静态方法是在
  • 2021-06-01 通过类去实现装饰器__call__.

    1 含有 init 的类 class MyClass a cherry def init self age sex self age age self sex sex def say self print hello obj MyClass
  • Quartz的MisFire机制解析

    在上一篇 Quartz的负载均衡如何实现 文章中说过Quartz的线程模型 提到了MisFire任务是由MisfireHandler线程专门进行处理的 本文主要是来了解下该部分功能是如何实现的 源码分析 MisfireHandler线程定义
  • java 上传方法_Java实现文件上传的方法

    本文实例为大家分享了java实现文件上传的具体代码 具体内容如下 1 java代码 package com github reston servlet import java io file import java io fileoutpu