de carga de archivos con solicitudes http
para cargar archivos a un servidor HTTP al tiempo que envía parámetros adicionales, java.net.urlconnection y se emplean a un servidor http que se emplean. Aquí hay un desglose del proceso:
multipart/formy-data encoding
multipart/formy-data está diseñado para solicitudes postales que combinan tanto los datos binarios (E.G., los archivos) como los de caracteres (por ejemplo, parámetros). La codificación implica dividir el cuerpo de solicitud en múltiples partes, cada una precedida con una cadena de límite.
ejemplo de código
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);
}
}
notas adicionales
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3