java图片上传下载_java实现文件的上传和下载
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实现文件的上传和下载相关推荐
- java 断点上传_java HTTP文件断点上传
之前仿造uploadify写了一个HTML5版的文件上传插件,没看过的朋友可以点此先看一下~得到了不少朋友的好评,我自己也用在了项目中,不论是用户头像上传,还是各种媒体文件的上传,以及各种个性的业务需 ...
- java根据Freemarker模板渲染出Excel文件并在浏览器中下载
**java根据Freemarker模板渲染出Excel文件并在浏览器中下载** 准备工作 1.导入的依赖 2.创建模板 Freemrker语法大全: [Freemarker语法使用请点击该链接跳转学 ...
- plupload分片上传php,plupload 大文件分片上传与PHP分片合并探索
最近老大分给我了做一个电影cms系统,其中涉及到一个功能,使用七牛云的文件上传功能.七牛javascript skd,使用起来很方便,屏蔽了许多的技术细节.如果只满足与调用sdk,那么可能工作中也就没 ...
- element ui upload组件文件上传一次 后,不论是上传成功之后修改文件再上传还是上传失败重新上传,再次点击上传均无反应。
问题: Element UI Upload 组件文件上传一次 后,不论是上传成功之后修改文件再上传还是上传失败重新上传,再次点击上传均无反应. 原因: 第一次上传文件后,浏览器还保存着我们已经上传的文 ...
- java图片上传下载_java web 文件上传与下载
组件工作流程:WEB服务器request ServletFil eupLoad DiskFileItem Factory代表普通字段的FileItem代表上传文件1FileItem代表上传文件2Fil ...
- java 上传断点续传_JAVA大文件上传断点续传解决方案
javaweb上传文件 上传文件的jsp中的部分 上传文件同样可以使用form表单向后端发请求,也可以使用 ajax向后端发请求 1.通过form表单向后端发送请求 Save 改进后的代码不需要for ...
- java多线程上传文件_Java大文件分片上传/多线程上传
这里只写后端的代码,基本的思想就是,前端将文件分片,然后每次访问上传接口的时候,向后端传入参数:当前为第几块文件,和分片总数 下面直接贴代码吧,一些难懂的我大部分都加上注释了: 上传文件实体类: 看得 ...
- java断点上传下载_java实现多线程断点续传,上传下载 分享
程序采用的ftp工具, apache 的 commons-net-ftp-ftpclient package com.ftp; import java.io.File; import java.io. ...
- winform实现FTP上传、下载、删除文件(附源码下载)
一个用winform开发的FTP上传.下载.删除文件的简单列子: 配套源码下载:https://download.csdn.net/download/djk8888/10473477 注释尽可能详尽, ...
最新文章
- The Way to TiDB 3.0 and Beyond (下篇)
- CodeForces - 566A Matching Names(字典树上贪心)
- 图解SQL的inner join(join)、left join、right join、full outer join、union、union all的区别...
- JS factory
- 论文浅尝 | NumNet: 一种带有数学推理的机器阅读理解模型
- Codeforces 1187E - Tree Painting(树上所有节点的儿子数量和最大)
- iOS的四种持久化存储
- c语言如何在手机上运行程序,各位前辈这两个程序怎么在手机上运行
- excel wind插件使用_这些超实用的Excel插件,你要是都知道,确定老司机无疑了
- 关于appium下载安装及环境配置
- openGL使用高度贴图模拟地球表面凹凸效果
- Python中的数值运算与逻辑运算
- 《Oracle PL/SQL程序设计(第5版)》一一2.4 执行必要的PL/SQL任务
- RNN实现股票预测(别当真)
- cad指北针lisp_auto cad指北针图块下载|CAD指北针
- linux内核怎么配置cpu为arm
- Redis Sentinel判断主观下线和客观下线
- 夺命六问Kubernetes 架构原理
- 台式主机的液晶显示屏突然偏红(轻微偏红)
- 汽车行业发展如何使用物联网(IoT)技术
热门文章
- hevc 中BLA图像
- linux管道和共享内存的区别,linux 管道、消息队列、共享内存的对比
- 什么是硬分叉?什么是软分叉?什么是共识就?
- 【ConfluxNews】2023.3.14 警惕虚假账号和钓鱼网址
- [bzoj4566][HAOI2016]找相同字符
- 如梦令·编码不知日暮
- 机器人 大战 android,US机器人城市大战
- ubuntu 18.04 搭建python selenium 环境
- excel in place无法使用,报错0k000
- linux 页缓存 读写,实验5Linux文件操作之带缓存和非缓冲文件的读写(10页)-原创力文档...