Загрузка файла на сайт

Ниже будет рассмотрен способ загрузки бинарного файла на сервер через post запрос.
Для получения картинки будет использоваться следующий скрипт:

<?php
if($_FILES['photo']['name']) {
	if(!$_FILES['photo']['error']){
		$valid_file = true;
		$new_file_name = strtolower($_FILES['photo']['tmp_name']);
		if($_FILES['photo']['size'] > (25000)) {
			$valid_file = false;
			echo 'Failed';
		}
		if($valid_file) {
			move_uploaded_file($_FILES['photo']['tmp_name'], 'image.jpg');
			echo 'Done';
		}
	} else {
		echo 'Failed: '.$_FILES['photo']['error'];
	}
}
?>
<form method="post" enctype="multipart/form-data">
	Your Photo: <input type="file" name="photo" size="25" />
	<input type="submit" name="submit" value="Submit" />
</form>

Для загрузки можно использовать java функцию.
первый аргумет — куда грузим
второй — откуда

private static final String CHARSET = "UTF-8";
private static String CRLF = "\r\n"; 

public static void uploadFile(String url, String path) throws IOException {
	String boundary = Long.toHexString(System.currentTimeMillis());
	File binaryFile = new File(path);
	
	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, CHARSET), true);
	) {    
		writer.append("--" + boundary).append(CRLF);
		writer.append("Content-Disposition: form-data; name=\"photo\"; filename=\"" + binaryFile.getName() + "\"").append(CRLF);
		writer.append("Content-Type: " + URLConnection.guessContentTypeFromName(binaryFile.getName())).append(CRLF);
		writer.append("Content-Transfer-Encoding: binary").append(CRLF);
		writer.append(CRLF).flush();
		Files.copy(binaryFile.toPath(), output);
		output.flush();
		writer.append(CRLF).flush(); 

		writer.append("--" + boundary + "--").append(CRLF).flush();
	}
	StringBuilder sb = new StringBuilder();
	byte[] buf = new byte[500];
	int n = 0;
	try (
		BufferedInputStream in = new BufferedInputStream(((HttpURLConnection) connection).getInputStream());
	){
		while (-1!=(n=in.read(buf))) {
			sb.append(new String(buf, 0, n));
		}
	}
	if (!sb.toString().contains("Done")) {
		throw new IllegalStateException("Upload failed: " + sb.toString());
	}
}
  1. Пока что нет комментариев.
  1. Пока что нет уведомлений.