`

如何用Java客户端/applet通过HTTP POST上传文件

    博客分类:
  • JAVA
阅读更多

如何用Java客户端/applet通过HTTP POST上传文件

 

http://coffeelover.iteye.com/blog/709868

 

package com.lph;

import java.io.*;
import java.net.*;

public class ServletCom {

 public static void main(String[] args) throws Exception {

  HttpURLConnection conn = null;
  BufferedReader br = null;
  DataOutputStream dos = null;
  DataInputStream inStream = null;

  InputStream is = null;
  OutputStream os = null;
  boolean ret = false;
  String StrMessage = "";
  String exsistingFileName = "C:\\account.xls";

  String lineEnd = "\r\n";
  String twoHyphens = "--";
  String boundary = "*****";

  int bytesRead, bytesAvailable, bufferSize;

  byte[] buffer;

  int maxBufferSize = 1 * 1024 * 1024;

  String responseFromServer = "";

  String urlString = "http://localhost:8080/FileUpload/requestupload";

  try {
   // ------------------ CLIENT REQUEST

   FileInputStream fileInputStream = new FileInputStream(new File(
     exsistingFileName));

   // open a URL connection to the Servlet

   URL url = new URL(urlString);

   // Open a HTTP connection to the URL

   conn = (HttpURLConnection) url.openConnection();

   // Allow Inputs
   conn.setDoInput(true);

   // Allow Outputs
   conn.setDoOutput(true);

   // Don't use a cached copy.
   conn.setUseCaches(false);

   // Use a post method.
   conn.setRequestMethod("POST");

   conn.setRequestProperty("Connection", "Keep-Alive");

   conn.setRequestProperty("Content-Type",
     "multipart/form-data;boundary=" + boundary);

   dos = new DataOutputStream(conn.getOutputStream());

   dos.writeBytes(twoHyphens + boundary + lineEnd);
   dos.writeBytes("Content-Disposition: form-data; name=\"upload\";"
     + " filename=\"" + exsistingFileName + "\"" + lineEnd);
   dos.writeBytes(lineEnd);

   // create a buffer of maximum size

   bytesAvailable = fileInputStream.available();
   bufferSize = Math.min(bytesAvailable, maxBufferSize);
   buffer = new byte[bufferSize];

   // read file and write it into form...

   bytesRead = fileInputStream.read(buffer, 0, bufferSize);

   while (bytesRead > 0) {
    dos.write(buffer, 0, bufferSize);
    bytesAvailable = fileInputStream.available();
    bufferSize = Math.min(bytesAvailable, maxBufferSize);
    bytesRead = fileInputStream.read(buffer, 0, bufferSize);
   }

   // send multipart form data necesssary after file data...

   dos.writeBytes(lineEnd);
   dos.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd);

   // close streams

   fileInputStream.close();
   dos.flush();
   dos.close();

  } catch (MalformedURLException ex) {
   System.out.println("From ServletCom CLIENT REQUEST:" + ex);
  }

  catch (IOException ioe) {
   System.out.println("From ServletCom CLIENT REQUEST:" + ioe);
  }

  // ------------------ read the SERVER RESPONSE

  try {
   inStream = new DataInputStream(conn.getInputStream());
   String str;
   while ((str = inStream.readLine()) != null) {
    System.out.println("Server response is: " + str);
    System.out.println("");
   }
   inStream.close();

  } catch (IOException ioex) {
   System.out.println("From (ServerResponse): " + ioex);

  }

 }

}


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/Breeze2003/archive/2008/09/22/2962177.aspx

分享到:
评论

相关推荐

    一个用JAVA Applet做的批量上传客户端

    用JAVA Applet做的一个批量上传客户端,用户可以多选文件进行上传,服务端可使用ASP,PHP,JSP等实现。客户端会将文件分卷POST到服务端,服务端需要接收这部分文件并保存为临时文件;分卷上传结束后客户端将调用...

    applet文件上传

    在Java编程领域,Applet是一种特殊类型的Java程序,它可以在客户端的Web浏览器中运行,为用户提供交互式的功能。本文将详细探讨"applet文件上传"这一主题,包括Applet的基本概念、工作原理、如何实现文件上传功能...

    大文件上传的Java Applet mupload

    本文将深入探讨如何使用Java Applet实现大文件上传功能,以及涉及到的相关知识点。 1. **Java Applet基础** Java Applet是Java平台上的一种小程序,它可以在支持Java的Web浏览器中运行。Applet通过HTML `<applet>`...

    基于Java的实例源码-大文件上传的Applet mupload.zip

    通过分析和学习这个Java Applet源码,开发者可以了解到如何在实际项目中处理大文件上传问题,提升Web应用的用户体验。同时,这也是一次深入理解Java多线程编程、网络通信以及客户端-服务器交互的好机会。不过,需要...

    java源码:大文件上传的Java Applet mupload.rar

    3. **大文件处理**:由于大文件不能一次性加载到内存中,因此源码可能会使用流式处理技术,如`java.io.FileInputStream`和`java.io.BufferedInputStream`,分块读取和上传文件。此外,可能还涉及到断点续传的逻辑,...

    applet录音上传

    通常,上传文件会使用POST方法,并在请求体中携带文件数据。在上传过程中,需要设置正确的请求头,如Content-Type来指定数据类型,以及Content-Length来指示数据的大小。 在服务器端,接收到音频数据后,需要将其...

    applet上传

    在这个过程中,客户端(即用户所在的计算机)会将文件通过网络发送至服务器端。在本案例中,描述了如何使用Java代码实现一个简单的文件上传功能。 ### 二、HTTP协议与文件上传 #### HTTP协议概述 HTTP(HyperText ...

    Applet与Servlet之间的通信与交互

    1. **通过HTTP请求**:Applet可以使用URLConnection或HttpClient类向Servlet发送HTTP GET或POST请求。Servlet接收请求后处理数据,并通过HTTP响应将结果返回给Applet。这种方法简单直观,但可能会暴露敏感信息。 2....

    Java/JSP获得客户端网卡MAC地址的三种方法解析

    由于Java运行在服务器端,而JavaScript则运行在客户端,可以通过JavaScript来捕获客户端的信息,然后通过AJAX请求发送到服务器处理。下面是一个简单的示例: **客户端JavaScript代码** ```javascript function ...

    SWING实现的上传控件,嵌入APPLET实现

    3. **文件上传**:在APPLET中,可以使用`java.net.URLConnection`或者第三方库如Apache HttpClient来与服务器建立连接,发送POST请求并将文件作为请求的一部分上传。注意,为了安全性和性能,通常会使用异步上传方式...

    上传组件Applet源码

    Applet需要实时更新上传状态,包括已上传文件的数量、大小、当前文件的上传进度等。这通常通过JavaScript与Applet之间的通信实现,JavaScript更新前端的UI,展示进度条或百分比。 在源码中,我们可能会看到以下关键...

    利用JMF,applet实现客户端拍照,然后上传到服务器图片

    本文将详细探讨如何利用Java Media Framework (JMF) 和Applet技术实现在客户端进行拍照并上传图片至服务器。 Java Media Framework (JMF) 是一个开源的Java平台组件,它为开发人员提供了一个框架,用于播放、捕获、...

    applet上传控件带例子源码

    4. **安全性考虑**: 使用Applet进行文件上传时,必须注意安全问题,例如防止恶意文件上传、限制上传文件类型和大小,以及确保数据传输过程的安全性。 5. **交互式编程**: Applet需要与HTML页面进行交互,这可能涉及...

    Java Applet与Java Servlet的安全通信策略与实现.rar_applet_applet servlet_jav

    Java Applet与Java Servlet是两种在Web开发中用于交互的技术。Applet是早期Java技术的一种,它允许在浏览器中运行Java代码,而Servlet则是在服务器端处理HTTP请求的Java程序。两者结合,可以构建动态、交互式的Web...

    Applet画图,上传

    在这个特定的场景下,"Applet画图,上传"涉及到的技术点主要包括Java Applet的基础使用、图形绘制以及文件上传。 首先,我们需要了解Java Applet。Applet是Java平台早期的一种特性,允许开发者创建可以在Web浏览器...

    applet上传案例

    然后,使用`java.io`和`java.net`库来实现文件的HTTP上传。同时,为了展示上传进度,我们需要使用`ProgressMonitor`或者Java Swing的`javax.swing.ProgressMonitorInputStream`,它可以监听并更新上传进度。 ```...

    applet与jsp的交互

    6. **使用Java RMI(远程方法调用)**:虽然不是常见的做法,但Applet可以通过RMI与服务器上的JSP进行通信,允许在客户端和服务器之间调用方法。不过,由于RMI涉及的安全性和复杂性,这种方法在实际应用中并不常见。...

    applet与servlet通讯

    4. **使用 JNLP (Java Web Start)**:Java Web Start 提供了一种安全的机制,通过 JNLP 文件与服务器通信,允许 Applet 更新和获取资源。 5. **使用 WebSocket**:对于需要双向通信的应用,WebSocket 可以提供低...

    java实现上传方法

    通过上述分析可以看出,Java中实现文件上传涉及到多个方面,包括Servlet的基本概念、文件上传的流程、核心代码的解析以及错误处理等。开发者需要理解这些基础知识才能正确地实现文件上传功能。此外,还可以考虑使用...

    超大文件上传DEMO

    它提供了FileReader、FileList、Blob对象等,可以读取、操作和上传文件。在进度条功能中,`FileReader`的`onprogress`事件被用来获取文件上传的当前进度。 2. **Servlet**:在服务器端,我们通常使用Servlet来接收...

Global site tag (gtag.js) - Google Analytics