用java写上传文件的方法
时间: 2024-01-30 17:02:46 浏览: 21
以下是一个简单的Java代码示例,用于上传文件到服务器:
```java
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
public class FileUploader {
public static void uploadFile(String serverUrl, String filePath) throws IOException {
URL url = new URL(serverUrl);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoOutput(true);
connection.setRequestMethod("POST");
String boundary = "*****";
String lineEnd = "\r\n";
String twoHyphens = "--";
connection.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary);
File file = new File(filePath);
InputStream inputStream = connection.getOutputStream();
String fileName = file.getName();
String fieldName = "file";
String header = twoHyphens + boundary + lineEnd;
header += "Content-Disposition: form-data; name=\"" + fieldName + "\";filename=\"" + fileName + "\"" + lineEnd;
header += lineEnd;
byte[] headerBytes = header.getBytes("UTF-8");
inputStream.write(headerBytes);
byte[] buffer = new byte[1024];
int bytesRead = 0;
while ((bytesRead = fileInputStream.read(buffer)) > 0) {
inputStream.write(buffer, 0, bytesRead);
}
inputStream.write((lineEnd + twoHyphens + boundary + twoHyphens + lineEnd).getBytes("UTF-8"));
inputStream.flush();
inputStream.close();
int statusCode = connection.getResponseCode();
if (statusCode == HttpURLConnection.HTTP_OK) {
// 文件上传成功
} else {
// 文件上传失败
}
}
}
```
在上面的代码中,我们使用了Java的HttpURLConnection类来与服务器进行通信。我们首先打开一个连接,并设置请求方法为POST,以告诉服务器我们要上传一个文件。我们还设置了请求头中的Content-Type,以告诉服务器我们要上传的是一个multipart/form-data类型的数据。
接下来,我们读取要上传的文件,并将其数据写入请求体中。我们使用了一个boundary字符串来标记请求体中的不同部分,以便服务器能够正确地解析请求。我们首先发送一个带有文件信息的头部,然后将文件的数据写入请求体中。最后,我们发送一个终止标记来告诉服务器我们已经完成了文件上传。
最后,我们检查服务器的响应代码,以确定文件是否成功上传。如果响应代码为HTTP_OK(200),则文件上传成功,否则文件上传失败。