загрузка файлов с помощью http-запросов
для загрузки файлов на сервер HTTP, в то же время представляя дополнительные параметры, Java.net.urlConnection и Multiprat/Form-Data, которые также используются. Вот разбивка процесса:
multipart/form-data, кодирование
multipart/form-data предназначена для запросов POST, которые объединяют как бинарные (например, файлы) и данные символов (например, параметры). Кодирование включает в себя разделение корпуса запроса на несколько частей, каждая из которых предварительно предназначена по граничной строке.
пример кода
import java.io.File;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.URLConnection;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
public class FileUpload {
public static void main(String[] args) throws Exception {
String url = "http://example.com/upload";
String param = "value";
File textFile = new File("/path/to/file.txt");
File binaryFile = new File("/path/to/file.bin");
String boundary = Long.toHexString(System.currentTimeMillis());
URLConnection connection = new URL(url).openConnection();
connection.setDoOutput(true);
connection.setRequestProperty("Content-Type", "multipart/form-data; boundary=" boundary);
try (OutputStream output = connection.getOutputStream();
PrintWriter writer = new PrintWriter(new OutputStreamWriter(output, StandardCharsets.UTF_8), true)) {
// Send parameter
writer.append("--" boundary).append("\r\n");
writer.append("Content-Disposition: form-data; name=\"param\"").append("\r\n");
writer.append("Content-Type: text/plain; charset=" StandardCharsets.UTF_8).append("\r\n");
writer.append("\r\n").append(param).append("\r\n").flush();
// Send text file
writer.append("--" boundary).append("\r\n");
writer.append("Content-Disposition: form-data; name=\"textFile\"; filename=\"" textFile.getName() "\"").append("\r\n");
writer.append("Content-Type: text/plain; charset=" StandardCharsets.UTF_8).append("\r\n");
writer.append("\r\n").flush();
Files.copy(textFile.toPath(), output);
output.flush();
writer.append("\r\n").flush();
// Send binary file
writer.append("--" boundary).append("\r\n");
writer.append("Content-Disposition: form-data; name=\"binaryFile\"; filename=\"" binaryFile.getName() "\"").append("\r\n");
writer.append("Content-Type: " URLConnection.guessContentTypeFromName(binaryFile.getName())).append("\r\n");
writer.append("Content-Transfer-Encoding: binary").append("\r\n");
writer.append("\r\n").flush();
Files.copy(binaryFile.toPath(), output);
output.flush();
writer.append("\r\n").flush();
// End of multipart/form-data
writer.append("--" boundary "--").append("\r\n").flush();
}
int responseCode = ((HttpURLConnection) connection).getResponseCode();
System.out.println("Response Code: " responseCode);
}
}
] дополнительные примечания
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3