protected class UploadFileThread extends java.lang.Thread {
private final java.util.Map<String, String> parameterMap;
private final java.util.Map<String, String> fileMap;
public UploadFileThread(Map<String, String> parameterMap, Map<String, String> fileMap) {
this.parameterMap = parameterMap;
this.fileMap = fileMap;
}
@Override
public void run() {
super.run();
android.util.Log.d("debug", "开始执行url->" + MHttpUrl.UPLOAD_EXCEL);
java.net.HttpURLConnection httpURLConnection = null;
java.io.OutputStream outputStream = null;
java.io.BufferedReader bufferedReader = null;
String BOUNDARY = "------------------------123821742118717";
try {
java.net.URL url = new java.net.URL(MHttpUrl.UPLOAD_EXCEL);
java.net.URLConnection urlConnection = url.openConnection();
httpURLConnection = (java.net.HttpURLConnection) urlConnection;
httpURLConnection.setConnectTimeout(10000);
httpURLConnection.setReadTimeout(600000);
httpURLConnection.setDoOutput(true);
httpURLConnection.setDoInput(true);
httpURLConnection.setUseCaches(false);
httpURLConnection.setRequestMethod("POST");
httpURLConnection.setRequestProperty("Connection", "Keep-Alive");
httpURLConnection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 6.1; zh-CN; rv:1.9.2.6)");
httpURLConnection.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + BOUNDARY);
outputStream = new java.io.DataOutputStream(httpURLConnection.getOutputStream());
if (parameterMap != null) {
java.util.Set<java.util.Map.Entry<String, String>> entrySet = parameterMap.entrySet();
java.util.Iterator<java.util.Map.Entry<String, String>> entryIterator = entrySet.iterator();
java.lang.StringBuilder stringBuilder = new StringBuilder();
while (entryIterator.hasNext()) {
java.util.Map.Entry<String, String> stringStringEntry = entryIterator.next();
String key = stringStringEntry.getKey();
String value = stringStringEntry.getValue();
if (value == null) {
continue;
}
stringBuilder.append("\r\n");
stringBuilder.append("--");
stringBuilder.append(BOUNDARY);
stringBuilder.append("\r\n");
stringBuilder.append("Content-Disposition: form-data; name=\"");
stringBuilder.append(key);
stringBuilder.append("\"\r\n\r\n");
stringBuilder.append(value);
android.util.Log.d("debug", "打印参数http分割信息->" + stringBuilder.toString());
}
outputStream.write(stringBuilder.toString().getBytes());
}
if (fileMap != null) {
java.util.Set<java.util.Map.Entry<String, String>> entrySet = fileMap.entrySet();
java.util.Iterator<java.util.Map.Entry<String, String>> entryIterator = entrySet.iterator();
while (entryIterator.hasNext()) {
java.util.Map.Entry<String, String> stringStringEntry = entryIterator.next();
String key = stringStringEntry.getKey();;
String value = stringStringEntry.getValue();
if (value == null) {
continue;
}
java.io.File file = new java.io.File(value);
String fileName = file.getName();
String contentType = "text/plain";
java.lang.String string = "";
string = string + "\r\n";
string = string + "--";
string = string + BOUNDARY;
string = string + "\r\n";
string = string + "Content-Disposition: form-data; name=\"";
string = string + key;
string = string + "\"; filename=\"";
string = string + fileName;
string = string + "\"\r\n";
string = string + "Content-Type:";
string = string + contentType;
string = string + "\r\n\r\n";
android.util.Log.d("debug", "打印文件http分割信息->" + string);
outputStream.write(string.getBytes());
java.io.DataInputStream dataInputStream = new java.io.DataInputStream(new java.io.FileInputStream(file));
int bytes = 0;
byte[] bufferOut = new byte[1024];
while ((bytes = dataInputStream.read(bufferOut)) != -1) {
outputStream.write(bufferOut, 0, bytes);
}
dataInputStream.close();
}
}
String endString = "\r\n--" + BOUNDARY + "--\r\n";
byte[] endData = endString.getBytes();
outputStream.write(endData);
outputStream.flush();
outputStream.close();
int responseCode = httpURLConnection.getResponseCode();
if (responseCode == 200) {
java.io.InputStream inputStream = httpURLConnection.getInputStream();
java.io.InputStreamReader inputStreamReader = new java.io.InputStreamReader(inputStream);
bufferedReader = new java.io.BufferedReader(inputStreamReader);
java.lang.StringBuilder stringBuilder = new java.lang.StringBuilder();
String line = null;
while ((line = bufferedReader.readLine()) != null) {
stringBuilder.append(line);
}
android.util.Log.d("debug", "打印返回的数据->" + stringBuilder.toString());
android.os.Message message = myHandler.obtainMessage();
message.what = 0;
message.obj = stringBuilder.toString();
boolean sendResult = myHandler.sendMessage(message);
} else {
android.os.Message message = myHandler.obtainMessage();
message.what = responseCode;
message.obj = String.valueOf(responseCode);
boolean sendResult = myHandler.sendMessage(message);
}
} catch (java.io.IOException e) {
e.printStackTrace();
android.os.Message message = myHandler.obtainMessage();
message.what = -1;
message.obj = e.getMessage();
boolean sendResult = myHandler.sendMessage(message);
} finally {
if (bufferedReader != null) {
try {
bufferedReader.close();
} catch (java.io.IOException e) {
e.printStackTrace();
}
}
if (outputStream != null) {
try {
outputStream.close();
} catch (java.io.IOException e) {
e.printStackTrace();
}
}
if (httpURLConnection != null) {
httpURLConnection.disconnect();
}
}
}
}
相关推荐
SSM框架下文件上传与下载的实现
SSM框架是由Spring、SpringMVC和MyBatis三个框架整合而来的,广泛应用于Java Web应用程序开发。Spring负责业务对象管理、SpringMVC负责前端控制器及视图解析,而MyBatis则作为数据持久层框架,负责数据库交互。SSM以其轻量级、灵活和高效等特点,受到众多开发者的青睐。SSM框架的三个主要组件包括:Spring:负责整个项目的IoC(控制反转)和AOP(面向切面编程)支持。Spring MVC:作为项目的Web层框架,负责处理用户的请求和响应。
Java代码:调用外部接口(使用Json格式传递参数)的方法
Java代码:调用外部接口(使用Json格式传递参数)的方法 https://blog.youkuaiyun.com/guoshijie8023/article/details/81634278 代码如下: String url="所给外部接口的url"; //创建连接对象 HttpClient httpClient = new HttpClient...
同时上传文件和相应的数据,实现前后台交互
同时上传文件和相应的数据,实现前后台交互,同时上传文件和相应的数据,实现前后台交互同时上传文件和相应的数据,实现前后台交互
Java中的参数传递
Java中的参数传递:分为值传递和引用传递 但本质上,Java中只有值传递。引用传递,其实可以理解为传的是类似指针的东西。 值传递就是把基本变量的值拷贝一份,传递这个拷贝。引用传递则是传递的引用的地址,也就是该变量在内存空间的地址。 1.值传递 只有基本数据类型采用值传递,特点是传递的是值的拷贝,传递完后两者就没有关系了。也就是说方法内和方法外的值互不相干 基本数据类型: ·整型:int,long,byte,short 浮点型:float,double 字符型:char 布尔型:boolean 注:8种基本
采用http协议请求系统接口一次传输多个文件和属性
原来系统中采用webservice技术进行系统间通信,传递bean属性和文件。现在采用http协议代替,速度更快,更便捷。使用java httpclient做的一个demo,采用springboot框架,下载后放idea里面就可以运行。
Win10下YOLOv8环境搭建避坑指南:从CUDA 11.6到cuDNN配置全流程
本文详细介绍了在Windows 10系统下搭建YOLOv8环境的完整流程,包括CUDA 11.6和cuDNN的配置步骤,以及常见问题的解决方案。通过硬件准备、软件安装、环境验证和性能优化等环节,帮助开发者高效完成YOLOv8环境配置,提升目标检测项目的开发效率。
java WebService接口调用,传JSON参数
转自:http://zheyiw.iteye.com/blog/1571222import java.io.IOException; import java.io.InputStream; import java.io.OutputStreamWriter; import java.net.HttpURLConnection; import java.net.URL; public ...
SPM12最新安装教程:Matlab2021a用户必看的路径配置技巧
本文为Matlab2021a用户提供SPM12的深度安装与路径配置指南。针对新版Matlab的路径管理变化,详细解析了传统方法失效的原因,并推荐通过创建startup.m文件实现SPM12路径的永久化、自动化配置,确保神经影像分析环境的稳定与高效。
java 调用http接口,发送post请求,传递body参数
访问企业微信审批单详情 第一种: 使用 cn.hutool.http Map<String,Object> body = new HashMap<>(); body.put("sp_no","参数"); String result = HttpUtil.post("请求路径?access_token="+accessToken.getAccessToken(),JSONObject.toJSONString(body)); if (result != null) { .
火山引擎之火山方舟知识库+OpenWebUI,搭建独属于自己的AI智能客服
创建接入点,接入点名称可按个人需求而定,比如Doubao-1.5-pro-32k,在添加模型选择Doubao-1.5-pro-32k,点击确定(PS:有些模型不支持知识库,若发现后续无法选择,请重新创建推理接入点。选择应用广场,创建零代码应用,在创建好的应用设置内编辑相关信息,并选择推理接入点,即先前建好的推理接入点;此处的模型名称是火山的模型ID名称,可在OpenWebUI设置-模型 中修改名称。至此所需的apikey和模型ID和请求的api地址(可选配置,非本文重点参数)。进入火山官网,注册账号。
Basilisk库教程
要在仿真中执行模块,其调度由Basilisk的[Process]和[Task]容器控制。BSK[Task]包含一系列模块,这些模块都以相同的更新频率执行。一个[Process]本质上是一个任务组,可以包含多个相关的任务。例如,在多星仿真中,你可以为每颗卫星创建一个[Process],以便将相关任务和嵌入式模块有序地组织起来。下图展示了一个示例布局,其中bskSat卫星的动力学被添加到与飞行软件(FSW)算法分开的进程中,这些算法在该卫星上执行。在每个进程中,设置了若干任务,这些任务以指定的频率进行评估。
apache http上传过慢_Httpclient实现文件上传、文件下载看这篇文章就够了
前言:使用httpclient实现文件的上传下载,废话补不多说,直接上概念上代码。1、相关概念:1 HTTP HTTP 协议可能是现在 Internet 上使用得最多、最重要的协议了,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源。 虽然在 JDK 的 java.net 包中已经提供了访问 HTTP 协议的基本功能,但是对于大部分应用程序来说,JDK 库本身提供的功能还不...
MacOS上VScode配置PlatformIO Core的疑难杂症与提速实战
本文详细解析了在MacOS上使用VScode配置PlatformIO Core时遇到的安装卡死、新建项目缓慢等常见问题,并提供了官方脚本安装、网络优化、命令行预下载等实用解决方案。通过环境变量配置和镜像源加速,大幅提升开发效率,特别适合ESP32等嵌入式开发场景。
jsp上传文件
(转 ) JavaBean实现多个文件上传的两种方法摘要:本文介绍了JavaBean实现多个文件上传的两种方法,分别是使用http协议和ftp协议实现。首先讲述了http协议传送多个文件的基本格式和实现上传的详细过程,之后简单介绍了使用ftpclient 类实现了ftp方式的上传,最后对这两种方法进行了比较。 关键字:JavaBean 、http 、ftp 、ftpclient JavaBea
【Neo4j × Python】基于知识图谱的电影问答系统(含问题记录与解决)附:源代码(含Bug解决)
此前,曾介绍过Neo4j的一些基础知识,本篇将在PyCharm中与Neo4j建立关联,从0到1实现一个基于知识图谱的电影问答系统,实现过程中,没有一帆风顺,而是遇到了一些问题,因此也包含问题的记录与解决。
【LAMMPS学习】四、运行 LAMMPS(2)命令行选项
本部分解释了在安装可执行文件或下载源代码并构建可执行文件后如何运行 LAMMPS。命令文档页面描述了输入脚本的结构以及它们可以包含的命令。
java http 上传_使用HttpClient实现文件的上传下载
1 HTTPHTTP 协议可能是现在 Internet 上使用得最多、最重要的协议了,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源。虽然在 JDK 的 java.net 包中已经提供了访问 HTTP 协议的基本功能,但是对于大部分应用程序来说,JDK 库本身提供的功能还不够丰富和灵活。HttpClient 用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编...
【AIGC】大模型面试高频考点09-大模型Agent框架
聚焦AIGC专业技术分享
JavaBean实现多个文件上传的两种方法
摘要:本文介绍了JavaBean实现多个文件上传的两种方法,分别是使用http协议和ftp协议实现。首先讲述了http协议传送多个文件的基本格式和实现上传的详细过程,之后简单介绍了使用ftpclient 类实现了ftp方式的上传,最后对这两种方法进行了比较。 关键字:JavaBean 、http 、ftp 、ftpclient JavaBean是一种基于Java的软件组件。JSP对于在
复分析 阿尔福斯(Ahlfors) 第三版答案 英文
答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案
lwip-2.0.3
lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。
http 上传文件java_使用HttpClient实现文件的上传下载方法
1 HTTPHTTP 协议可能是现在 Internet 上使用得最多、最重要的协议了,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源。虽然在 JDK 的 java.net 包中已经提供了访问 HTTP 协议的基本功能,但是对于大部分应用程序来说,JDK 库本身提供的功能还不够丰富和灵活。HttpClient 用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编...
RU DOS版、EFI版32bit/64bit BIOS常用工具
DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。
java iis上传文件_使用HttpClient实现文件的上传下载方法
1 HTTPHTTP 协议可能是现在 Internet 上使用得最多、最重要的协议了,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源。虽然在 JDK 的 java.net 包中已经提供了访问 HTTP 协议的基本功能,但是对于大部分应用程序来说,JDK 库本身提供的功能还不够丰富和灵活。HttpClient 用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编...
廖雪峰Python教程[完整版]
廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白
HTTP-CLIENT文件上传下载
copy from https://www.cnblogs.com/Scott007/p/3817285.html 1 HTTP HTTP 协议可能是现在 Internet 上使用得最多、最重要的协议了,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源。 虽然在 JDK 的 java.net 包中已经提供了访问 HTTP 协议的基本功能,但是对...
使用HttpClient实现文件的上传下载
1 HTTP HTTP 协议可能是现在 Internet 上使用得最多、最重要的协议了,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源。 虽然在 JDK 的 java.net 包中已经提供了访问 HTTP 协议的基本功能,但是对于大部分应用程序来说,JDK 库本身提供的功能还不够丰富和灵活。HttpClient 用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。 一般的情况下我们都是使...
使用HttpClient实现文件的上传下载方法
觉得写得不错,转载过来分享一下。转载自:http://www.jb51.net/article/100386.htm 下面小编就为大家带来一篇使用HttpClient实现文件的上传下载方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧 1 HTTP HTTP 协议可能是现在 Internet 上使用得最多、最重要的协议了,越来越多的 Jav
js上传文件的方式
一 . 平台 环境 win10 IDEA JDK8 springboot 二 . 上传文件 方式一 FormData 1.WebConfig.java (和Application.java同一目录下) 作用 将本地路径 D:\\upload\xxxxxxx 映射成为 http://127.0.0...
Http客户端工具类-HttpUtil
Http客户端工具类-HttpUtil 概述 HttpUtil是应对简单场景下Http请求的工具类封装,此工具封装了HttpRequest对象常用操作,可以保证在一个方法之内完成Http请求。 此模块基于JDK的HttpUrlConnection封装完成,完整支持https、代理和文件上传。 使用 请求普通页面 针对最为常用的GET和POST请求,HttpUtil封装了两个方法, H...
851



被折叠的 条评论
为什么被折叠?



