1、 servlet 如何实现文件的上传和下载?

1.1上传文件

参考自:http://blog.csdn.net/hzc543806053/article/details/7524491

通过前台选择文件,然后将资源上传到(即新建一个文件)到发布的资源文件下面,

下载就是url 到发布的资源文件,触发即可自动下载。服务器已经封装了如何下载的底层实现。(此处用的是tomcat)

JSP上传文件方法:关于在HTTP request 中通过Post方法提交文件的规范,该项目性能稳定快速,易于部署和使用.本次教程以前端jsp + 后端 servlet的方式,利用JSP上传文件,你也可以完全在jsp中实现而不用servlet.

在开始JSP上传文件之前你要准备以下几个东西:

1. commons-FileUpload 1.3 包

下载地址:http://jakarta.apache.org/commons/fileupload/

2. commons-IO 2.5 包

下载地址:http://jakarta.apache.org/commons/io/

有了上面这些东西我们就可以开始了

1. 新建一个叫Servlet_UploadDownLoad的WEB项目

2. 接着把这两个jar包放到WEB-INF/lib目录中:

3.接下来我们要准备一份如下内容的upload.jsp文件,用来选择要上传的文件,

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

Jsp+Servlet upload file

上面文件中有几个需要注意的地方就是

1. action="UploadServlet" 必须和后面的web.xml配置文件中对servlet映射必须保持一致.

2. method="POST" 这里必须为"POST"方式提交不能是"GET".

3.enctype="multipart/form-data"这里是要提交的内容格式,表示你要提交的是数据流,而不是普通的表单文本.

4. file1,file2,file3表示你要3个文件一起上传,你也可以一次只上传一个文件.

接下来我们要写一个与上面这个upload.jsp配套的servlet程序,就叫做UploadServlet.java吧import java.io.File;

import java.io.*;

import java.io.IOException;

import java.io.PrintWriter;

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.FileUploadException;

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

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

/**

*

* @author Administrator 文件上传 具体步骤: 1)获得磁盘文件条目工厂 DiskFileItemFactory 要导包 2) 利用

*         request 获取 真实路径 ,供临时文件存储,和 最终文件存储 ,这两个存储位置可不同,也可相同 3)对

*         DiskFileItemFactory 对象设置一些 属性 4)高水平的API文件上传处理 ServletFileUpload

*         upload = new ServletFileUpload(factory); 目的是调用

*         parseRequest(request)方法 获得 FileItem 集合list ,

*

*         5)在 FileItem 对象中 获取信息, 遍历, 判断 表单提交过来的信息 是否是 普通文本信息 另做处理 6) 第一种. 用第三方

*         提供的 item.write( new File(path,filename) ); 直接写到磁盘上 第二种. 手动处理

*

*/

public class UploadServlet extends HttpServlet {

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

request.setCharacterEncoding("utf-8"); // 设置编码

// 获得磁盘文件条目工厂

DiskFileItemFactory factory = new DiskFileItemFactory();

// 获取文件需要上传到的路径

String path = request.getRealPath("/uploadFile");

// 如果没以下两行设置的话,上传大的 文件 会占用 很多内存,

// 设置暂时存放的 存储室 , 这个存储室,可以和 最终存储文件 的目录不同

/**

* 原理 它是先存到 暂时存储室,然后在真正写到 对应目录的硬盘上, 按理来说 当上传一个文件时,其实是上传了两份,第一个是以 .tem

* 格式的 然后再将其真正写到 对应目录的硬盘上

*/

factory.setRepository(new File(path));

// 设置 缓存的大小,当上传文件的容量超过该缓存时,直接放到 暂时存储室

factory.setSizeThreshold(1024 * 1024);

// 高水平的API文件上传处理

ServletFileUpload upload = new ServletFileUpload(factory);

try {

// 可以上传多个文件

List list = (List) upload.parseRequest(request);

for (FileItem item : list) {

// 获取表单的属性名字

String name = item.getFieldName();

// 如果获取的 表单信息是普通的 文本 信息

if (item.isFormField()) {

// 获取用户具体输入的字符串 ,名字起得挺好,因为表单提交过来的是 字符串类型的

String value = item.getString();

request.setAttribute(name, value);

} else {// 对传入的非 简单的字符串进行处理 ,比如说二进制的 图片,电影这些

/**

* 以下三步,主要获取 上传文件的名字

*/

// 获取路径名

String value = item.getName();

// 索引到最后一个反斜杠

int start = value.lastIndexOf("\\");

// 截取 上传文件的 字符串名字,加1是 去掉反斜杠,

String filename = value.substring(start + 1);

request.setAttribute(name, filename);

// 真正写到磁盘上

// 它抛出的异常 用exception 捕捉

// item.write( new File(path,filename) );//第三方提供的

// 手动写的

OutputStream out = new FileOutputStream(new File(path,

filename));

InputStream in = item.getInputStream();

int length = 0;

byte[] buf = new byte[1024];

System.out.println("获取上传文件的总共的容量:" + item.getSize());

// in.read(buf) 每次读到的数据存放在 buf 数组中

while ((length = in.read(buf)) != -1) {

// 在 buf 数组中 取出数据 写到 (输出流)磁盘上

out.write(buf, 0, length);

}

in.close();

out.close();

}

}

} catch (FileUploadException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (Exception e) {

// TODO Auto-generated catch block

// e.printStackTrace();

}

}

}

upload.jsp文件有了,配套的servlet也有了,现在最后剩下的就是怎么让它们配合工作了,接着我们把WEB-INF/web.xml文件请出来,并在该文件中加入以下内容:<?xml  version="1.0" encoding="UTF-8"?>

xmlns="http://java.sun.com/xml/ns/javaee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

upload.jsp

UploadServlet

UploadServlet

UploadServlet

/UploadServlet

写好以后再点击"保存"

把你的upload项目整个拷贝到tomcat的webapps目录下,启动tomcat.打开IE浏览器在地址栏中输入http://localhost:8080/Servlet_UploadDownLoad/upload.jsp怎么样看到JSP上传文件的输入框了吗? 什么,没有看到,出错了! 你仔细检查一下步骤有没有对.

好了,现在我们点击页面上的"浏览"按钮,找到我们要上传的文件,最后点击"Submit",太激动了,还不看一下你的I:\\updir里面有没有你要的东西.

1.2下载文件

1)通过超链接实现下载

在HTML网页中,通过超链接链接到要下载的文件的地址:downloadOne.jsp

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

通过链接下载文件

通过链接下载文件

压缩包

图片

"/Servlet_UploadDownLoad/file/commons-beanutils-1.9.3-bin.zip"是文件路径,程序结构如下图:

程序运行后,可以通过单击需要下载文档实现下载

但是这里会出现一个问题,就是单击下载压缩包的时候会弹出下载页面,但是下载图片的时候浏览器就直接打开了图片,没有下载。

这是因为通过超链接下载文件时,如果浏览器可以识别该文件格式,浏览器就会直接打开。只有浏览器不能识别该文件格式的时候,才会实现下载。

因此利用第二种方法实现下载功能。

2)通过Servlet程序实现下载

通过Servlet下载文件的原理是通过servlet读取目标程序,将资源返回客户端。

downloadTwo.jsp

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

通过链接下载文件

通过链接下载文件

压缩包

图片

通过servlet程序下载文件

压缩包

图片

其中,/Servlet_UploadDownLoad 是servlet程序的映射路径

然后新建一个servlet,名称为ServletDownload,URL映射为/ServletDownload

web.xml :<?xml  version="1.0" encoding="UTF-8"?>

xmlns="http://java.sun.com/xml/ns/javaee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

upload.jsp

UploadServlet

UploadServlet

ServletDownload

ServletDownload

ServletDownload

ServletDownload

UploadServlet

/UploadServlet

ServletDownload

/ServletDownload

ServletDownload.java :import java.io.FileInputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

import java.io.PrintWriter;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

public class ServletDownload extends HttpServlet {

/**

* Constructor of the object.

*/

public ServletDownload() {

super();

}

/**

* The doGet method of the servlet.

*

* This method is called when a form has its tag value method equals to get.

*

* @param request the request send by the client to the server

* @param response the response send by the server to the client

* @throws ServletException if an error occurred

* @throws IOException if an error occurred

*/

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

//获得请求文件名

String filename = request.getParameter("filename");

System.out.println(filename);

//设置文件MIME类型

response.setContentType(getServletContext().getMimeType(filename));

//设置Content-Disposition

response.setHeader("Content-Disposition", "attachment;filename="+filename);

//读取目标文件,通过response将目标文件写到客户端

//获取目标文件的绝对路径

String fullFileName = getServletContext().getRealPath("/file/" + filename);

//System.out.println(fullFileName);

//读取文件

InputStream in = new FileInputStream(fullFileName);

OutputStream out = response.getOutputStream();

//写文件

int b;

while((b=in.read())!= -1)

{

out.write(b);

}

in.close();

out.close();

}

/**

* The doPost method of the servlet.

*

* This method is called when a form has its tag value method equals to post.

*

* @param request the request send by the client to the server

* @param response the response send by the server to the client

* @throws ServletException if an error occurred

* @throws IOException if an error occurred

*/

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

}

}

重启tomcat服务器,即可实现对压缩包和对图片的下载。

2、struts如何实现文件的上传和下载?

2.1struts上传文件

先新建web project ,然后Add Struts Capabilties:

struts.xml的配置:<?xml  version="1.0" encoding="UTF-8" ?>

struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">

image/pjpeg,image/bmp,image/jpg,image/png,image/gif,image/jpeg

/success.jsp

/upload.jsp

upload.jsp :

HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

Jsp+Struts2 upload file

【请选择图片进行上传】

表单中enctype="multipart/form-data"的意思,是设置表单的MIME 编码。默认情况,这个编码格式是application/x-www-form-urlencoded,不能用于文件上传;只有使用了multipart /form-data,才能完整的传递文件数据,进行下面的操作.enctype="multipart/form-data"是上传二进制数据; form里面的input的值以2进制的方式传过去。theme="simple"是struts2 的一个最简单的主题,这样你的标签就生成最简单的HTML元素 不会生成额外的内容

【这里的name一定要与action类里面的name名字一致,set/get】

success.jsp

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

">

上传图片成功

上传图片成功 !!!

web.xml<?xml  version="1.0" encoding="UTF-8"?>

xmlns="http://java.sun.com/xml/ns/javaee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

upload.jsp

struts2

org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

struts2

/*

UploadAction.javapackage com.action.UploadAction;

import java.io.File;

import java.util.ArrayList;

import java.util.List;

import com.file.util.Upload;

import com.opensymphony.xwork2.ActionSupport;

public class UploadAction extends ActionSupport {

private List file;

private List fileFileName;

private List fileContentType;

public List getFile() {

return file;

}

public void setFile(List file) {

this.file = file;

}

public List getFileFileName() {

return fileFileName;

}

public void setFileFileName(List fileFileName) {

this.fileFileName = fileFileName;

}

public List getFileContentType() {

return fileContentType;

}

public void setFileContentType(List fileContentType) {

this.fileContentType = fileContentType;

}

@Override

public String execute() throws Exception {

Upload upload = new Upload();

ArrayList list = upload.upload(file, this.getFileFileName(), "/files/");

if (list.size() > 0) {

return SUCCESS;

}else {

return INPUT;

}

}

}

Upload.javapackage com.file.util;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

import java.text.SimpleDateFormat;

import java.util.ArrayList;

import java.util.Date;

import java.util.List;

import org.apache.struts2.ServletActionContext;

public class Upload {

@SuppressWarnings("unchecked")

/*

* @file:文件域列表

*

* @fileName:上传文件的文件名

*

* @path:文件上传的目录,相对目录。 说明:文件上传所存放目录的规则:网站根目录下 files/会员ID/网站类型名称/上传文件分类名称/

*

* @返回结果:一个存放上传文件所在位置相对路径的ArrayList

*/

public ArrayList upload(List file, List fileName, String path)

throws IOException {

// String root = ServletActionContext.getRequest().getRealPath(path);

String root = ServletActionContext.getServletContext()

.getRealPath(path);

File dir = new File(root);

if (dir.exists() == false) {

dir.mkdirs();

}

ArrayList list = new ArrayList();

for (int i = 0; i

InputStream is = new FileInputStream(file.get(i).toString());

/*

* SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");//

* 格式化时间输出 String Rname = sdf.format(new Date());//

* 取得当前时间,Date()是java.util包里的,这作为真实名称 name = Rname + name;//

* 重命名文件名称,命名规则为:时间+原文件名称

*/

String name = fileName.get(i).toString();// 得到上传文件的原名称

File destFile = new File(root, name);

OutputStream os = new FileOutputStream(destFile);

byte[] buffer = new byte[400];

int length = 0;

while ((length = is.read(buffer)) > 0) {

os.write(buffer, 0, length);

}

list.add(path + name);

is.close();

os.close();

}

return list;

}

}

mkdirs()可以建立多级文件夹, mkdir()只会建立一级的文件夹, 如下:

new File("/tmp/one/two/three").mkdirs();

执行后, 会建立tmp/one/two/three四级目录

new File("/tmp/one/two/three").mkdir();

则不会建立任何目录, 因为找不到/tmp/one/two目录, 结果返回false

例子的代码结构:

2.2struts下载文件

方法一:通过配置struts.xml文件

DownloadAction.java

package com.action.DownloadAction;

import java.io.InputStream;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

//文件下载

public class DownloadAction extends ActionSupport {

private String fileName;

public String getFileName() {

return fileName;

}

public void setFileName(String fileName) {

this.fileName = fileName;

}

// 返回一个输入流,作为一个客户端来说是一个输入流,但对于服务器端是一个 输出流

public InputStream getDownloadFile() throws Exception {

//解决中文乱码,get方式提交的参数编码,只支持iso8859-1编码,UTF-8是前台jsp页面的编码格式

this.fileName = new String(this.fileName.getBytes("ISO-8859-1"), "UTF-8");

String path = "downloadFile/"+this.fileName;//要下载的文件路径

//重新转换成ISO-8859-1,下载文件的时候展示的文件名

this.fileName = new String(this.fileName.getBytes("UTF-8"), "ISO-8859-1");

return ServletActionContext.getServletContext().getResourceAsStream(path);

}

public String execute() throws Exception {

return SUCCESS;

}

}

struts.xml<?xml  version="1.0" encoding="UTF-8" ?>

struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">

image/pjpeg,image/bmp,image/jpg,image/png,image/gif,image/jpeg

/success.jsp

/upload.jsp

text/plain

attachment;fileName="${fileName}"

DownloadFile

1024

1.结果类型必须要写成type="stream"  ,与之对应的处理类是 org.apache.struts2.dispatcher.StreamResult

2.涉及到的参数:

3.

1)  attachment;fileName="${fileName}"

contentDisposition默认是 inline(内联的), 比如说下载的文件是文本类型的,就直接在网页上打开,不能直接打开的才会打开下载框自己选择

2)  attachment :下载时会打开下载框

3)  fileName="${fileName}" :在这定义的名字是一个动态的,该名字是显示在下载框上的文件名字

4.DownloadFile,这个DownloadFile名字要和DownloadAction.java类中的getDownloadFile()方法名去掉get 一致

Struts2下载文件实现的说明

contentType

内容类型,和互联网MIME标准中的规定类型一致,例如text/plain代表纯文本,text/xml表示XML,image/gif代表GIF图片,image/jpeg代表JPG图片

inputName

下载文件的来源流,对应着action类中某个类型为Inputstream的属性名,例如取值为inputStream的属性需要编写getInputStream()方法

contentDisposition

文件下载的处理方式,包括内联(inline)和附件(attachment)两种方式,而附件方式会弹出文件保存对话框,否则浏览器会尝试直接显示文件。取值为:

attachment;filename="struts2.txt",表示文件下载的时候保存的名字应为struts2.txt。如果直接写filename="struts2.txt",那么默认情况是代表inline,浏览器会尝试自动打开它,等价于这样的写法:inline;filename="struts2.txt"

bufferSize

下载缓冲区的大小

downloadOne.jsp

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

Struts下载文件

文件下载内容:

1.jpg:点击下载

2.jpg:点击下载2

中文1.jpg:点击下载中文1.jpg

中文2.jpg:点击下载中文2.jpg

例子的代码结构:

 方法二

方法二:通过配置java文件来实现下载

DownloadByJavaAction.javapackage com.action.DownloadAction;

import java.io.BufferedInputStream;

import java.io.BufferedOutputStream;

import java.io.File;

import java.io.FileInputStream;

import java.io.InputStream;

import javax.servlet.http.HttpServletResponse;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

public class DownloadByJavaAction  extends ActionSupport {

private String fileName;

public String getFileName() {

return fileName;

}

public void setFileName(String fileName) {

this.fileName = fileName;

}

public void download() throws Exception{

/**

* 配置文件路径

*/

String realPath = ServletActionContext.getRequest().getRealPath("/");

String path = getText("/downloadFile/");

//解决中文乱码,get方式提交的参数编码,只支持iso8859-1编码,UTF-8是前台jsp页面的编码格式

fileName = new String(fileName.getBytes("ISO-8859-1"), "UTF-8");

File file = new File(realPath+path+fileName);

InputStream in = new FileInputStream(file);

//重新转换成ISO-8859-1,下载文件的时候展示的文件名

fileName = new String(this.fileName.getBytes("UTF-8"), "ISO-8859-1");

/**

* 配置下载参数,下载文件

*/

BufferedInputStream input = null;

BufferedOutputStream output = null;

try {

HttpServletResponse response = ServletActionContext.getResponse();

response.setCharacterEncoding("utf-8");

response.setContentType("application/x-download");// 设置为下载application/x-download

response.addHeader("content-type", "application/x-msdownload");

response.setHeader("Content-Disposition", "attachment; filename="

+ fileName);

response.setContentType("application/octet-stream");

input = new BufferedInputStream(in);

output = new BufferedOutputStream(response.getOutputStream());

byte[] buff = new byte[4096];

int n = 0;

while ((n = input.read(buff)) != -1) {

output.write(buff, 0, n);

}

output.flush();

} catch (Exception e) {

} finally {

try {

if (output != null) {

output.close();

output = null;

}

if (input != null) {

input.close();

input = null;

}

if (in != null) {

in.close();

in = null;

}

} catch (Exception e) {

e.printStackTrace();

}

}

}

}

downloadByJava.jsp

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

Struts下载文件(java实现)

JAVA实现

文件下载内容:

1.jpg:点击下载

2.jpg:点击下载2

中文1.jpg:点击下载中文1.jpg

中文2.jpg:点击下载中文2.jpg

struts.xml<?xml  version="1.0" encoding="UTF-8" ?>

struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">

image/pjpeg,image/bmp,image/jpg,image/png,image/gif,image/jpeg

/success.jsp

/upload.jsp

text/plain

attachment;fileName="${fileName}"

DownloadFile

1024

class="com.action.DownloadAction.DownloadByJavaAction">

程序目录结构:

3、批量下载

使用多线程并发调用单个文件的下载方法即可。

4、断点续传

有待研究。。。。。。。。。。

附件源码:

java图片上传下载_java实现文件的上传和下载相关推荐

  1. java 断点上传_java HTTP文件断点上传

    之前仿造uploadify写了一个HTML5版的文件上传插件,没看过的朋友可以点此先看一下~得到了不少朋友的好评,我自己也用在了项目中,不论是用户头像上传,还是各种媒体文件的上传,以及各种个性的业务需 ...

  2. java根据Freemarker模板渲染出Excel文件并在浏览器中下载

    **java根据Freemarker模板渲染出Excel文件并在浏览器中下载** 准备工作 1.导入的依赖 2.创建模板 Freemrker语法大全: [Freemarker语法使用请点击该链接跳转学 ...

  3. plupload分片上传php,plupload 大文件分片上传与PHP分片合并探索

    最近老大分给我了做一个电影cms系统,其中涉及到一个功能,使用七牛云的文件上传功能.七牛javascript skd,使用起来很方便,屏蔽了许多的技术细节.如果只满足与调用sdk,那么可能工作中也就没 ...

  4. element ui upload组件文件上传一次 后,不论是上传成功之后修改文件再上传还是上传失败重新上传,再次点击上传均无反应。

    问题: Element UI Upload 组件文件上传一次 后,不论是上传成功之后修改文件再上传还是上传失败重新上传,再次点击上传均无反应. 原因: 第一次上传文件后,浏览器还保存着我们已经上传的文 ...

  5. java图片上传下载_java web 文件上传与下载

    组件工作流程:WEB服务器request ServletFil eupLoad DiskFileItem Factory代表普通字段的FileItem代表上传文件1FileItem代表上传文件2Fil ...

  6. java 上传断点续传_JAVA大文件上传断点续传解决方案

    javaweb上传文件 上传文件的jsp中的部分 上传文件同样可以使用form表单向后端发请求,也可以使用 ajax向后端发请求 1.通过form表单向后端发送请求 Save 改进后的代码不需要for ...

  7. java多线程上传文件_Java大文件分片上传/多线程上传

    这里只写后端的代码,基本的思想就是,前端将文件分片,然后每次访问上传接口的时候,向后端传入参数:当前为第几块文件,和分片总数 下面直接贴代码吧,一些难懂的我大部分都加上注释了: 上传文件实体类: 看得 ...

  8. java断点上传下载_java实现多线程断点续传,上传下载 分享

    程序采用的ftp工具, apache 的 commons-net-ftp-ftpclient package com.ftp; import java.io.File; import java.io. ...

  9. winform实现FTP上传、下载、删除文件(附源码下载)

    一个用winform开发的FTP上传.下载.删除文件的简单列子: 配套源码下载:https://download.csdn.net/download/djk8888/10473477 注释尽可能详尽, ...

最新文章

  1. The Way to TiDB 3.0 and Beyond (下篇)
  2. CodeForces - 566A Matching Names(字典树上贪心)
  3. 图解SQL的inner join(join)、left join、right join、full outer join、union、union all的区别...
  4. JS factory
  5. 论文浅尝 | NumNet: 一种带有数学推理的机器阅读理解模型
  6. Codeforces 1187E - Tree Painting(树上所有节点的儿子数量和最大)
  7. iOS的四种持久化存储
  8. c语言如何在手机上运行程序,各位前辈这两个程序怎么在手机上运行
  9. excel wind插件使用_这些超实用的Excel插件,你要是都知道,确定老司机无疑了
  10. 关于appium下载安装及环境配置
  11. openGL使用高度贴图模拟地球表面凹凸效果
  12. Python中的数值运算与逻辑运算
  13. 《Oracle PL/SQL程序设计(第5版)》一一2.4 执行必要的PL/SQL任务
  14. RNN实现股票预测(别当真)
  15. cad指北针lisp_auto cad指北针图块下载|CAD指北针
  16. linux内核怎么配置cpu为arm
  17. Redis Sentinel判断主观下线和客观下线
  18. 夺命六问Kubernetes 架构原理
  19. 台式主机的液晶显示屏突然偏红(轻微偏红)
  20. 汽车行业发展如何使用物联网(IoT)技术

热门文章

  1. hevc 中BLA图像
  2. linux管道和共享内存的区别,linux 管道、消息队列、共享内存的对比
  3. 什么是硬分叉?什么是软分叉?什么是共识就?
  4. 【ConfluxNews】2023.3.14 警惕虚假账号和钓鱼网址
  5. [bzoj4566][HAOI2016]找相同字符
  6. 如梦令·编码不知日暮
  7. 机器人 大战 android,US机器人城市大战
  8. ubuntu 18.04 搭建python selenium 环境
  9. excel in place无法使用,报错0k000
  10. linux 页缓存 读写,实验5Linux文件操作之带缓存和非缓冲文件的读写(10页)-原创力文档...