java版:
package com.lh.post;
import java.io.*;
import java.net.*;
public class PostFile {
private static byte[] readFile(String file)throws Exception
{
FileInputStream fis = new FileInputStream(file);
byte[] b = new byte[256];
int l;
ByteArrayOutputStream bos = new ByteArrayOutputStream();
while((l=fis.read(b)) != -1){
bos.write(b,0,l);
}
fis.close();
return bos.toByteArray();
}
public static void main(String[] args) throws Exception{
URL url = new URL("http://localhost:8080/hellodwr/upload.jsp");
HttpURLConnection connection=(HttpURLConnection)url.openConnection();
//设置请求方式
connection.setRequestMethod("POST");
connection.setDoOutput(true);
//读取文件内容到byte[]
//File file=new File("d:\\s.txt");
//FileOutputStream fos=new FileOutputStream(file);
/*
byte buff;
StringBuffer file_buff =new StringBuffer();
while((buff=fis.read())!=-1)
{
file_buff.append(new String(buff));
}
*/
//byte[] f="abcdefghijklmnopqrstuvwxyz".getBytes();
//byte[] f=readFile("d:\\s.txt");
byte[] f=new FileUtil().getFileByte("d:\\test.doc");
System.out.println("字节数组的大小:"+f.length);
/*
for(int i=0;i<f.length;i++)
{
System.out.print(f[i]);
}
*/
//fos.write(f);
// 分隔符
String BOUNDARY = "---------------------------7d4a6d158c9";
StringBuffer sb = new StringBuffer();
//发送文件:
sb = sb.append("--");
sb = sb.append(BOUNDARY);
sb = sb.append("\r\n");
sb = sb.append("Content-Disposition: form-data; name=\"s\"; filename=\"test.doc\"\r\n");
sb = sb.append("Content-Type: application/octet-stream\r\n\r\n");
byte[] data = sb.toString().getBytes();
byte[] end_data = ("\r\n--" + BOUNDARY + "--\r\n").getBytes();
// 设置HTTP头:
connection.setRequestProperty("Content-Type", "multipart/form-data;boundary="+ BOUNDARY);
connection.setRequestProperty("Content-Length", String.valueOf(data.length + f.length + end_data.length));
// 输出:
OutputStream out=connection.getOutputStream();
out.write(data);
out.write(f);
out.write(end_data);
out.flush();
// 读取服务器响应:
BufferedReader in=new BufferedReader(new InputStreamReader(connection.getInputStream()));
String line=null;
while((line=in.readLine())!=null){
System.out.println(line);
}
in.close();
out.close();
}
}
class FileUtil {
public byte[] getFileByte(String fileName) throws FileNotFoundException {
FileInputStream fileInputStream = new FileInputStream(fileName);
return getFileByte(fileInputStream);
}
public byte[] getFileByte(URL url) throws IOException {
if (url != null) {
return getFileByte(url.openStream());
} else {
return null;
}
}
public byte[] getFileByte(InputStream in) {
ByteArrayOutputStream out = new ByteArrayOutputStream(4096);
try {
copy(in, out);
} catch (IOException e) {
e.printStackTrace();
}
return out.toByteArray();
}
private void copy(InputStream in, OutputStream out) throws IOException {
try {
byte[] buffer = new byte[4096];
int nrOfBytes = -1;
while ((nrOfBytes = in.read(buffer)) != -1) {
out.write(buffer, 0, nrOfBytes);
}
out.flush();
} catch (IOException e) {
}finally {
try {
if (in != null) {
in.close();
}
} catch (IOException ex) {
}
try {
if (out != null) {
out.close();
}
} catch (IOException ex) {
}
}
}
}
delphi版:
unit UpDownFile;
interface
uses
Windows, Classes, Idhttp, URLMon, IdMultipartFormData;
const UpUrl = 'http://127.0.0.1/upfile/upfile.asp';
const UpFileName = 'C:\Documents and Settings\Administrator\桌面\test\web.mdb';
const DownUrl = 'http://www.google.com/images/logo_sm.gif';
const DownFileName = 'web.gif';
type
TUpDownFile = class
private
FThreadID : DWord;
FHandle : THandle;
{ Private declarations }
public
constructor Create;
procedure UpFile;
procedure DownFile;
procedure Close;
end;
implementation
function UpFileEx(): string; stdcall;
var
MutPartForm: TIdMultiPartFormDataStream;
response: string;
FHttp: Tidhttp;
begin
FHttp := Tidhttp.Create(nil);
FHttp.HandleRedirects := true;
FHttp.AllowCookies := true;
MutPartForm := TIdMultiPartFormDataStream.Create;
MutPartForm.AddFormField('act', 'upload');
MutPartForm.AddFormField('upcount', '1');
MutPartForm.AddFormField('filepath', 'data');
MutPartForm.AddFormField('file1', 'filename="' + UpFileName + '"');
MutPartForm.AddFormField('Submit', 'Submit');
MutPartForm.AddFile('file1', UpFileName, 'text/plain');
try
response := FHttp.Post(UpUrl, MutPartForm);
//Messagebox(0, PAnsiChar(response), 'ca', MB_OK);
finally
MutPartForm.Free;
FHttp.Free;
end;
end;
function DownFileEx(): string; stdcall;
begin
UrlDownloadToFile(nil, PChar(DownUrl), PChar(DownFileName), 0, nil);
end;
constructor TUpDownFile.Create;
begin
//
end;
procedure TUpDownFile.UpFile;
begin
//FHandle := CreateThread(nil,0,@UpFileEx,nil,0,FThreadID);
UpFileEx;
end;
procedure TUpDownFile.DownFile;
begin
// FHandle := CreateThread(nil,0,@DownFileEx,nil,0,FThreadID);
DownFileEx;
end;
procedure TUpDownFile.Close;
begin
//ExitThread(FThreadID);
end;
end.
delphi2(simple):
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
IdHTTP, StdCtrls,IdMultipartFormData;
type
TForm1 = class(TForm)
IdHTTP1: TIdHTTP;
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var
memStr:TmemoryStream;
begin
memStr := TMemoryStream.Create;
IdHTTP1.Get('http://localhost:9090/qingyuan_newets/login.jsp',memStr);
memStr.SaveToFile('e:\abc.txt');
memStr.Free;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
mp: TIdMultiPartFormDataStream;
begin
mp:= TIdMultiPartFormDataStream.Create ;
mp.AddFormField('file_type','zzs');
mp.AddFile( 'e:\abc.txt', 'e:\abc.txt','application');
IdHTTP1.Post('http://localhost:9090/qingyuan_newets/uploadAction.do', mp);
end;
end.
分享到:
相关推荐
HTTP 实现文件上传 HTTP 实现文件上传 HTTP 实现文件上传 HTTP 实现文件上传 HTTP 实现文件上传 HTTP 实现文件上传 HTTP 实现文件上传HTTP 实现文件上传
本主题聚焦于使用C语言实现HTTP POST方法上传文件和发送JSON数据,这对于开发嵌入式系统、移动应用后端或者任何需要轻量级网络交互的项目来说尤其有用。 HTTP POST方法通常用于向服务器发送数据,比如用户填写的...
"httppost上传文件需要的两个jar"是指在进行HTTP POST文件上传时,需要依赖的两个关键库,即`httpmime-4.3.5.jar`和`httpcore-4.3.2.jar`。这两个JAR文件是Apache HttpClient项目的一部分,提供了丰富的HTTP客户端...
在IT行业中,HTTP POST方式是常见的一种数据提交方式,尤其在文件上传场景中。C#作为.NET框架的主要编程语言,提供了强大的支持来实现这个功能。本文将深入探讨如何使用C#进行HTTP POST方式的文件上传,并关注一些...
POST请求是HTTP协议中的一个方法,用于向服务器发送数据,通常用于提交表单或上传文件。在C语言中,实现HTTP POST请求可以借助libcurl库。libcurl是一个强大的客户端URL传输库,支持多种协议,包括HTTP。使用libcurl...
使用了java httppost 上传FileEntity实体文件,服务器端用php接收客户端的上传文件。
当我们需要在HTTP POST中上传文件和表格数据时,通常会创建一个包含文件输入字段和普通文本输入字段的HTML表单。在表单提交时,浏览器会自动将这些数据打包成multipart/form-data格式。每部分数据都用边界(boundary...
3. 在任务中读取待上传文件的数据,并计算文件长度。 4. 设置HTTP请求头,包括"Content-Type"(如"application/octet-stream"表示二进制数据)和"Content-Length"。 5. 开始POST请求,将文件数据分块发送。 6. 监听...
总结,通过HTTP POST上传文件涉及服务器端和客户端的交互,其中客户端需要处理文件选择、读取、进度显示和速度计算,而服务器端则负责接收和保存文件。理解这些知识点对于开发涉及文件上传的系统至关重要。通过实践...
用vc++在http协议下实现文件的上传和下载 里面包含的几个文档可供大家研究
POST是HTTP请求的一种类型,用于向服务器发送数据,通常用于提交表单或上传文件。与GET请求不同,POST请求的数据不会显示在URL中,而是包含在请求正文中。 在Qt中,我们可以使用QNetworkAccessManager类来处理HTTP...
基于Qt5.12.10开发的http文件上传,采用QHttpMultiPart方式上传,详情请看博客: https://fulin.blog.csdn.net/article/details/111933283
http post 上传文件到服务器及hfs 服务器接收文件。 #ifndef __HTTP_POST__ #define __HTTP_POST__ #define SERVER_ADDR "123.207.48.25" #define SERVER_PORT 10001 #define SERVER_URL "123.207.48.25" #define ...
当我们谈论"C# .NET后台post上传文件"时,我们通常是指在Web应用中通过HTTP POST请求将文件从客户端(如浏览器)上传到服务器的过程。在这个场景中,特别是涉及到图片上传,可能的应用场景包括用户头像上传、产品...
由于iOS无法通过html表单来上传文件,因此想要上传文件,必须实现http请求,而不能像其他语言那样通过html表单的post就能上传。此demo经过xcode5测试通过。此文件上传demo是按照 rfc1867协议实现的。
本实例主要聚焦于使用POST方式上传文件,这在移动应用、网页表单或者后台接口开发中非常普遍。当我们需要上传照片或视频等大文件时,POST请求通常是首选,因为它可以携带大量数据。 POST请求的基本原理是客户端(如...
使用httpPost java实现文件上传转发。 使用MultipartFile[] files,@RequestParam Map,Object> map 接收
在IT行业中,C++是一种强大的...总之,C++实现POST文件上传服务器涉及到HTTP协议的理解、文件读取、网络库的使用以及错误处理等多个环节。通过学习和实践,你可以掌握这一重要技能,为你的应用程序添加更丰富的功能。
在这个场景中,我们将深入探讨如何利用libcurl在C++中上传文件并发送POST表单数据。 首先,`con_test.cpp`是主要的源代码文件,它包含了使用libcurl进行文件上传和POST操作的具体实现。`StdAfx.cpp`和`StdAfx.h`是...
在Android开发中,文件的下载、上传和解压是常见的操作,特别是在移动应用中与服务器交互时。本示例着重讲解如何使用Socket...本示例提供的Socket HTTP POST上传文件的实现,可以作为学习和研究网络编程的一个起点。