用java写上传文件的方法
时间: 2024-01-30 13:02:46 浏览: 82
java文件上传方法
以下是使用Java编写上传文件的示例代码:
```java
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
public class UploadFile {
private static final String UPLOAD_URL = "http://example.com/upload";
public static void main(String[] args) {
try {
File file = new File("path/to/file");
String fileName = file.getName();
String contentType = "text/plain"; // 根据需要设置文件类型
InputStream inputStream = null;
try {
inputStream = UploadFile.class.getResourceAsStream("/path/to/file");
} catch (Exception e) {
e.printStackTrace();
}
uploadFile(fileName, contentType, inputStream);
} catch (Exception e) {
e.printStackTrace();
}
}
private static void uploadFile(String fileName, String contentType, InputStream inputStream) throws IOException {
URL url = new URL(UPLOAD_URL);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("POST");
connection.setDoOutput(true);
connection.setRequestProperty("Content-Type", contentType);
connection.setRequestProperty("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
OutputStream outputStream = connection.getOutputStream();
byte[] buffer = new byte[4096];
int bytesRead = -1;
while ((bytesRead = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, bytesRead);
}
inputStream.close();
outputStream.close();
int responseCode = connection.getResponseCode();
System.out.println("Server response code: " + responseCode);
}
}
```
在上述示例代码中,我们首先定义了一个常量 `UPLOAD_URL`,它表示文件上传的目标URL。然后,我们使用 `File` 类来获取要上传的文件,并将文件名和内容类型设置为变量 `fileName` 和 `contentType`。接着,我们使用 `getResourceAsStream()` 方法来获取文件的输入流 `inputStream`。注意,这里只是为了演示方便,实际使用中可能需要根据具体情况自行获取输入流。
最后,我们调用 `uploadFile()` 方法来实现文件上传,其中我们使用 `HttpURLConnection` 类来创建一个 HTTP 连接,并设置请求方法为 POST,并设置 `Content-Type` 和 `Content-Disposition` 头。然后,我们使用 `getOutputStream()` 方法来获取输出流 `outputStream`,并将文件数据写入输出流。最后,我们关闭输入流和输出流,获取服务器响应代码并输出。
需要注意的是,上述示例代码中的文件上传方式是将文件作为附件上传,即使用 `Content-Disposition` 头指定文件名。如果需要将文件内容作为请求体上传,可以去掉 `Content-Disposition` 头,并将文件数据写入输出流即可。
阅读全文