这两天在用http上传大的文件,访问路径为http://172.18.7.108:8898/images/upload?name=bbbbb&type=qcow2&arch=i386&bucket=suzhou_bucket
接口上传文件时,总是返回OK!或者200,但是文件没有传过去,
http://hostIP:8898/images/upload
这个是我的连接路径,而且还需要参数name=bbbbb&type=qcow2&arch=i386&bucket=suzhou_bucket。
我用python代码访问的时候确实没有问题,但是用如下java代码则出现问题,有人知道怎么回事吗?
以下是我的代码。
public class vstarEnvImageStub {
public void uploadImageVStarv(String host, String port, String imagesrc,
String name, String imagetype, String arch, String bucketname,
String username, String password) {
String userPass = username + ":" + password;
String userPassEncoded = new BASE64Encoder()
.encode(userPass.getBytes());
String path = "http://" + host + ":" + port + "/images/upload?name="
+ name + "&type=" + imagetype + "&arch=" + arch + "&bucket="
+ bucketname;
String pathURL = "http://" + host + ":" + port + "/images/upload";
System.out.println(path);
try {
HttpURLConnection urlConnection;
URL url = new URL(pathURL);
urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("PUT");
urlConnection.setRequestProperty("User-Agent", "put.py/1.0");
urlConnection.setRequestProperty("Connection", "keep-alive");
urlConnection.setRequestProperty("Transfer-Encoding", "chunked");
urlConnection.setRequestProperty("Expect", "100-continue");
urlConnection.setRequestProperty("Accept", "*/*");
urlConnection.setDoOutput(true);
urlConnection.setDoInput(true);
urlConnection.setUseCaches(false);
urlConnection.setRequestProperty("Authorization", "Basic "
+ userPassEncoded);
OutputStream outUrlConnection = urlConnection.getOutputStream();
OutputStreamWriter out = new OutputStreamWriter(outUrlConnection);
urlConnection.connect();
String params = "name=" + name + "&type=" + imagetype + "&arch="
+ arch + "&bucket=" + bucketname;
out.write(params);
out.flush();
File file = new File("/home/zju/" + name);
FileInputStream in = new FileInputStream(file);
long length;
byte[] buffer = new byte[2048 * 2048];
long total = 0;
while (true) {
length = in.read(buffer);
if (length <= 0)
break;
out.write(length + "\r\n");
out.write(buffer + "\r\n");
out.flush();
total += length;
System.out.println(total);
}
out.write("0\r\n\r\n");
out.flush();
outUrlConnection.close();
out.close();
urlConnection.disconnect();
String s = urlConnection.getResponseMessage();
int t = urlConnection.getResponseCode();
System.out.println("Finish!!!!");
System.out.println(s + t);
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws Exception {
vstarEnvImageStub stub = new vstarEnvImageStub();
stub.uploadImageVStarv("172.18.7.108", "8898", "/home/zju", "bbbbb",
"qcow2", "i386", "suzhou_bucket", "fire3", "123456");
}
}
相关推荐
支持断点续传和超过1G大文件的HTTP上传组件(Active控件)。 主要特点: 1、文件上传完全采用HTTP协议. 用户使用浏览器就可以上传大文件到服务器(支持上传超过1G的文件) 2、支持断点续传, 用户可以自己选择采用断点...
- 设置请求方法为POST,并设置Content-Type头为"multipart/form-data",这是HTTP上传文件的标准格式。 - 使用FileStream读取选定的文件内容,然后写入到HttpWebRequest的GetRequestStream中。 4. 发送请求并处理...
在C#编程中,HTTP上传文件是常见的网络通信任务,特别是在Web应用开发中。通过HTTP协议,客户端(通常是用户浏览器或应用程序)可以将文件发送到服务器进行存储、处理或其他操作。这里我们将详细讨论如何使用C#实现...
这是我个人用C#写的一个通过WEB/HTTP上传超大文件或整个文件夹程序,最初是为了某项目写的一段程序。但这个项目的上传功能最终没有落实这个需求,所以也没在进一步做下去了,但整个超大文件和文件夹的上传功能程序是...
文件上传功能是HTTP协议中的一个重要应用,允许用户在Web应用中上传本地文件到服务器。Java作为一种强大的编程语言,提供了多种方式来实现HTTP协议的文件上传功能。在这个场景下,我们通常会用到原生态的三层架构,...
通过理解HTTP协议、使用适当的C#类库和正确处理大文件、进度显示及错误处理,我们可以构建出一个功能完备、稳定的文件上传系统。在WindowsFormsApplication3项目中,你可以集成这些概念,创建一个用户友好的文件上传...
3. 在任务中读取待上传文件的数据,并计算文件长度。 4. 设置HTTP请求头,包括"Content-Type"(如"application/octet-stream"表示二进制数据)和"Content-Length"。 5. 开始POST请求,将文件数据分块发送。 6. 监听...
HTTP 实现文件上传 HTTP 实现文件上传 HTTP 实现文件上传 HTTP 实现文件上传 HTTP 实现文件上传 HTTP 实现文件上传 HTTP 实现文件上传HTTP 实现文件上传
CHttpClient类就是这样的一个封装,它的设计目标是使开发者能够轻松地处理HTTP上传和下载任务。这个类通常会包含以下关键组件: 1. **连接管理**:CHttpClient类可能包含连接管理功能,如建立、保持和关闭到服务器...
c++ 实现,在 linux 平台测试通过,windows 上原理是一样的,下载上传大文件没有问题,
基于Qt5.12.10开发的http文件上传,采用QHttpMultiPart方式上传,详情请看博客: https://fulin.blog.csdn.net/article/details/111933283
本主题聚焦于使用C语言实现HTTP POST方法上传文件和发送JSON数据,这对于开发嵌入式系统、移动应用后端或者任何需要轻量级网络交互的项目来说尤其有用。 HTTP POST方法通常用于向服务器发送数据,比如用户填写的...
这些框架提供了`HttpPostedFileBase`类,用于处理来自HTTP请求的上传文件。在控制器中,我们可以通过`Request.Files`获取上传的文件,并通过`SaveAs()`方法保存到服务器的指定位置。 对于断续上传,我们需要在...
在C#编程环境中,开发一个HTTP文件上传客户端是一项常见的任务,尤其在构建Web应用程序或集成API接口时。本文将深入探讨如何使用C#实现在HTTP协议基础上的文件上传功能,并展示上传进度,确保程序的正确运行。 首先...
传统的HTTP表单上传方式在处理大文件时存在限制,容易导致内存溢出或超时等问题。因此,采用AJAX技术实现大文件上传是解决这一问题的有效方案。本教程将基于标题“大文件上传,ajax实现,支持10G以上的上传”和描述...
在IT行业中,HTTP(超文本传输协议)是用于在Web上进行数据交换的基本协议。它定义了客户端(如浏览器)和服务器之间的通信...在实际应用中,还需要考虑安全性问题,如防止上传恶意文件或过大文件导致服务器压力过大。
同时,Ajax和FormData对象使得可以在不刷新页面的情况下异步上传文件。 2. 后端技术:服务器端通常使用各种编程语言来接收和处理文件,如Node.js的multer库、Python的Flask或Django框架、Java的Spring MVC等。它们...
在这个HTTP文件上传服务器中,可能包含一个对话框,用户可以通过选择文件按钮来选取本地文件,然后点击上传按钮发起文件上传请求。 其次,理解HTTP协议对于实现文件上传至关重要。HTTP协议定义了客户端(浏览器或...
5、支持大文件上传,一次可以上传多个文件,上传时有详细状态显示(单个文件进度,整体进度,传输速率,剩余时间等)。 6、支持各种代理(HTTP, Socket4, Socket5等) 7、客户端可以绑定表单变量,服务端并可以接收...
`php.ini`配置文件中的`post_max_size`和`upload_max_filesize`决定了允许上传文件的最大尺寸。这两个参数需要根据实际需求进行调整,确保能容纳大文件。另外,`max_input_time`和`memory_limit`也需要适当增加,以...