`
lh8489
  • 浏览: 52417 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

http post上传文件

阅读更多
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 post 上传文件

    HTTP 实现文件上传 HTTP 实现文件上传 HTTP 实现文件上传 HTTP 实现文件上传 HTTP 实现文件上传 HTTP 实现文件上传 HTTP 实现文件上传HTTP 实现文件上传

    C代码版本的HTTP POST上传文件/JSON

    本主题聚焦于使用C语言实现HTTP POST方法上传文件和发送JSON数据,这对于开发嵌入式系统、移动应用后端或者任何需要轻量级网络交互的项目来说尤其有用。 HTTP POST方法通常用于向服务器发送数据,比如用户填写的...

    httppost上传文件需要的两个jar

    "httppost上传文件需要的两个jar"是指在进行HTTP POST文件上传时,需要依赖的两个关键库,即`httpmime-4.3.5.jar`和`httpcore-4.3.2.jar`。这两个JAR文件是Apache HttpClient项目的一部分,提供了丰富的HTTP客户端...

    http post方式上传文件(C#)

    在IT行业中,HTTP POST方式是常见的一种数据提交方式,尤其在文件上传场景中。C#作为.NET框架的主要编程语言,提供了强大的支持来实现这个功能。本文将深入探讨如何使用C#进行HTTP POST方式的文件上传,并关注一些...

    c版本的http post 上传/下载文件/JSON

    POST请求是HTTP协议中的一个方法,用于向服务器发送数据,通常用于提交表单或上传文件。在C语言中,实现HTTP POST请求可以借助libcurl库。libcurl是一个强大的客户端URL传输库,支持多种协议,包括HTTP。使用libcurl...

    java http post 上传文件到php web server

    使用了java httppost 上传FileEntity实体文件,服务器端用php接收客户端的上传文件。

    http post上传文件与表格 ContentType = multipart/form-data

    当我们需要在HTTP POST中上传文件和表格数据时,通常会创建一个包含文件输入字段和普通文本输入字段的HTML表单。在表单提交时,浏览器会自动将这些数据打包成multipart/form-data格式。每部分数据都用边界(boundary...

    在单片机上实现http upload 小文件上传

    3. 在任务中读取待上传文件的数据,并计算文件长度。 4. 设置HTTP请求头,包括"Content-Type"(如"application/octet-stream"表示二进制数据)和"Content-Length"。 5. 开始POST请求,将文件数据分块发送。 6. 监听...

    通过http协议上传文件

    总结,通过HTTP POST上传文件涉及服务器端和客户端的交互,其中客户端需要处理文件选择、读取、进度显示和速度计算,而服务器端则负责接收和保存文件。理解这些知识点对于开发涉及文件上传的系统至关重要。通过实践...

    vc++ 实现http协议文件上传

    用vc++在http协议下实现文件的上传和下载 里面包含的几个文档可供大家研究

    Qt实现简单的Http Post数据传输

    POST是HTTP请求的一种类型,用于向服务器发送数据,通常用于提交表单或上传文件。与GET请求不同,POST请求的数据不会显示在URL中,而是包含在请求正文中。 在Qt中,我们可以使用QNetworkAccessManager类来处理HTTP...

    HttpUpload Qt Http上传文件简单示例

    基于Qt5.12.10开发的http文件上传,采用QHttpMultiPart方式上传,详情请看博客: https://fulin.blog.csdn.net/article/details/111933283

    Linux 下http post 文件到文件服务器的方法

    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上传文件

    当我们谈论"C# .NET后台post上传文件"时,我们通常是指在Web应用中通过HTTP POST请求将文件从客户端(如浏览器)上传到服务器的过程。在这个场景中,特别是涉及到图片上传,可能的应用场景包括用户头像上传、产品...

    http文件上传demo(http模拟POST表单上传文件)

    由于iOS无法通过html表单来上传文件,因此想要上传文件,必须实现http请求,而不能像其他语言那样通过html表单的post就能上传。此demo经过xcode5测试通过。此文件上传demo是按照 rfc1867协议实现的。

    Post方式上传文件

    本实例主要聚焦于使用POST方式上传文件,这在移动应用、网页表单或者后台接口开发中非常普遍。当我们需要上传照片或视频等大文件时,POST请求通常是首选,因为它可以携带大量数据。 POST请求的基本原理是客户端(如...

    使用httpPost实现文件上传转发

    使用httpPost java实现文件上传转发。 使用MultipartFile[] files,@RequestParam Map,Object&gt; map 接收

    c++文件post上传服务器

    在IT行业中,C++是一种强大的...总之,C++实现POST文件上传服务器涉及到HTTP协议的理解、文件读取、网络库的使用以及错误处理等多个环节。通过学习和实践,你可以掌握这一重要技能,为你的应用程序添加更丰富的功能。

    C++使用libcurl提供的API上传文件且Post表单数据

    在这个场景中,我们将深入探讨如何利用libcurl在C++中上传文件并发送POST表单数据。 首先,`con_test.cpp`是主要的源代码文件,它包含了使用libcurl进行文件上传和POST操作的具体实现。`StdAfx.cpp`和`StdAfx.h`是...

    安卓文件下载上传解压相关-使用Socket完成HTTPpost方式的文本及文件上传demo.rar

    在Android开发中,文件的下载、上传和解压是常见的操作,特别是在移动应用中与服务器交互时。本示例着重讲解如何使用Socket...本示例提供的Socket HTTP POST上传文件的实现,可以作为学习和研究网络编程的一个起点。

Global site tag (gtag.js) - Google Analytics