用Java写一个上传文件的功能函数

好的,以下是使用 Java 上传文件的示例代码:

``` import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.OutputStream; import java.net.HttpURLConnection; import java.net.URL; import java.util.Base64; import java.util.Map;

public class FileUploader { private static final String LINE_FEED = "\r\n";

/**
 * 使用 POST 方法上传文件
 *
 * @param requestURL 请求的 URL
 * @param fileFormName 文件表单字段的名称
 * @param file 文件对象
 * @param authHeader 认证的头信息(可选)
 * @param otherParams 其他参数(可选)
 * @return 服务器的响应信息
 * @throws Exception
 */
public static String uploadFile(String requestURL, String fileFormName, File file,
                                String authHeader, Map<String, String> otherParams) throws Exception {
    HttpURLConnection connection = null;
    OutputStream outputStream = null;
    BufferedReader reader = null;

    try {
        // 创建连接
        URL url = new URL(requestURL);
        connection = (HttpURLConnection) url.openConnection();
        connection.setRequestMethod("POST");
        connection.setDoInput(true);
        connection.setDoOutput(true);
        connection.setUseCaches(false);
        connection.setRequestProperty("Connection", "Keep-Alive");
        connection.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + getBoundary());

        // 设置认证的头信息
        if (authHeader != null &amp;&amp; !authHeader.isEmpty()) {
            connection.setRequestProperty("Authorization", authHeader);
        }

        // 获取输出流
        outputStream = connection.getOutputStream();

        // 写入文件数据
        outputStream.write(("--" + getBoundary() + LINE_FEED).getBytes());
        outputStream.write(("Content-Disposition: form-data; name=\"" + fileFormName + "\"; filename=\""
                + file.getName() + "\"" + LINE_FEED).getBytes());
        outputStream.write(("Content-Type: " + URLConnection.guessContentTypeFromName(file.getName()) + LINE_FEED)
                .getBytes());
        outputStream.write(("Content-Transfer-Encoding: binary" + LINE_FEED).getBytes());
        outputStream.write(LINE_FEED.getBytes());

        FileInputStream inputStream =
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值