Я пытаюсь загрузить ZIP-файл на FTP-сервер с помощью Apache HttpClient.
Мой код Java выглядит так:
public void doFileUpload(String Localfile, String myurl) {
HttpClientBuilder builder = HttpClientBuilder.create();
HttpClient httpClient = builder.build();
HttpPost httpPost = new HttpPost(myurl);
MultipartEntityBuilder entityBuilder = MultipartEntityBuilder.create();
entityBuilder.addBinaryBody("file", new File(Localfile));
final HttpEntity entity = entityBuilder.build();
System.out.println(entity.getContentLength());
httpPost.setEntity(entity);
try {
HttpResponse response = httpClient.execute(httpPost);
System.out.println(response.toString());
System.out.println("Success");
} catch (IOException ex) {
System.out.println("Failed"+ex);
Logger.getLogger(FileUpload.class.getName()).log(Level.SEVERE, null, ex);
}
В моем файле php:
if (!empty($_FILES["file"]["name"])) {
$dat = time();
$file_name=$_FILES["file"]["name"];
$temp_name=$_FILES["file"]["tmp_name"];
$target_path = $file_name."-".$dat;
if (is_uploaded_file($temp_name)) {
echo "File ". $target_path ." uploaded successfully.\n";
move_uploaded_file ($temp_name, $target_path);
} else {
echo "Possible file upload attack: ";
echo "filename '". $temp_name . "'.";
print_r($_FILES);
}
}
Это прекрасно работает, если я загружаю файл в папку, где находится мой php-файл. Но в моем состоянии пользователь будет загружать свои файлы в свою папку. Пример: пользователь А загрузит файл в myftp/upload/A/
или пользователь B загрузит файл в myftp/upload/B/
Целевая папка определяется со стороны пользователя. Я могу создать папку для всех пользователей вручную и поместить php-файл в каждую папку. Но как я могу сделать это с одним файлом php?
Задача ещё не решена.
Других решений пока нет …