以下是一个简单的文件上传的Java代码示例,使用 Java 标准库的 java.netjava.io 包,通过 HttpURLConnection 类实现文件上传。

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

public class FileUploader {

    public static void main(String[] args) throws Exception {
        String fileToUpload = 'path/to/file.txt';
        String uploadUrl = 'http://example.com/upload.php';
        File file = new File(fileToUpload);
        String boundary = '===' + System.currentTimeMillis() + '===';
        String lineEnd = '\r\n';
        HttpURLConnection conn = (HttpURLConnection) new URL(uploadUrl).openConnection();
        conn.setDoOutput(true);
        conn.setRequestMethod('POST');
        conn.setRequestProperty('Content-Type', 'multipart/form-data; boundary=' + boundary);
        OutputStream outputStream = conn.getOutputStream();
        PrintWriter writer = new PrintWriter(new OutputStreamWriter(outputStream, 'UTF-8'), true);
        writer.append('--' + boundary).append(lineEnd);
        writer.append('Content-Disposition: form-data; name="file"; filename="' + file.getName() + '"').append(lineEnd);
        writer.append('Content-Type: ' + URLConnection.guessContentTypeFromName(file.getName())).append(lineEnd);
        writer.append('Content-Transfer-Encoding: binary').append(lineEnd);
        writer.append(lineEnd);
        writer.flush();
        FileInputStream inputStream = new FileInputStream(file);
        byte[] buffer = new byte[4096];
        int bytesRead = -1;
        while ((bytesRead = inputStream.read(buffer)) != -1) {
            outputStream.write(buffer, 0, bytesRead);
        }
        outputStream.flush();
        inputStream.close();
        writer.append(lineEnd);
        writer.flush();
        writer.append('--' + boundary + '--').append(lineEnd);
        writer.close();
        outputStream.close();
        int responseCode = conn.getResponseCode();
        if (responseCode == HttpURLConnection.HTTP_OK) {
            //文件上传成功
        } else {
            //文件上传失败
        }
        conn.disconnect();
    }
}

在这个示例中,fileToUpload是要上传的文件路径,uploadUrl是上传的目标URL。在HttpURLConnection对象中,我们使用了POST方法并设置了Content-Typemultipart/form-data,这是HTTP协议中常用的文件上传方式。我们通过PrintWriter类将文件数据写入输出流中,并使用FileInputStream读取文件数据。最后,我们检查HTTP响应码,如果返回的是HTTP_OK,则表示文件上传成功。

代码说明:

  • boundary: 用于区分上传文件和表单数据的边界字符串。
  • lineEnd: 用于表示换行符。
  • HttpURLConnection: 用于建立HTTP连接,并发送HTTP请求。
  • Content-Type: 设置为 multipart/form-data,表示使用多部分表单数据上传文件。
  • PrintWriter: 用于将文件数据写入输出流。
  • FileInputStream: 用于读取文件数据。
  • responseCode: 用于检查HTTP响应码,判断文件上传是否成功。

更多优化:

  • 可以使用第三方库,如Apache Commons FileUpload,简化文件上传操作。
  • 可以添加异常处理机制,提高代码健壮性。
  • 可以根据具体需求,添加进度条、文件大小限制等功能。
Java 文件上传示例代码:使用 HttpURLConnection 实现文件上传

原文地址: https://www.cveoy.top/t/topic/lYZ8 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录