Ошибка говорит само за себя ... clasNotFoundException ... Проверьте ваш путь к классу, похоже, DataImportHandler не находится на вашем пути к классам ...
<lib dir="../../../dist/" regex="apache-solr-dataimporthandler-.*\.jar" />
После изменения конфигурации перезапустите сервер Jetty.
<form enctype="multipart/form-data" action="action.php" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="1000000" />
<input name="userfile" type="file" />
<input type="submit" value="Go" />
</form>
action.php
название файла PHP, который обработает загрузку (показанный ниже)MAX_FILE_SIZE
должен сразу появиться перед входом с типом file
. Этим значением можно легко управлять на клиенте, так не должен быть положен. Его основное преимущество состоит в том, чтобы предоставить пользователю дальнее обнаружение, что их файл является слишком большим, прежде чем они загрузили его.file
, но удостоверьтесь, что это не содержит пробелов. Необходимо также обновить соответствующее значение в файле PHP (ниже).<?php
$uploaddir = "/www/uploads/";
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
echo '<pre>';
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
echo "Success.\n";
} else {
echo "Failure.\n";
}
echo 'Here is some more debugging info:';
print_r($_FILES);
print "</pre>";
?>
Загрузка - к папке не должна быть расположена в месте, это доступно через HTTP, иначе было бы возможно загрузить Сценарий PHP и выполнить его на сервер.
Печать значения $_FILES
может дать подсказку относительно того, что продолжается. Например:
Array ( [userfile] => Array ( [name] => Filename.ext [type] => [tmp_name] => [error] => 2 [size] => 0 ) )
Эта структура дает некоторую информацию относительно имени файла, типа MIME, размера и кода ошибки.
0 Указывает, что не было никаких ошибок, и файл был загружен успешно
1 Указывает, что файл превышает максимальный размер файла, определенный в php.ini. Если требуется изменить максимальный размер файла, необходимо открыть файл php.ini, определить строку, которая читает: upload_max_filesize = 2M и изменение значение от 2M (2 МБ) к тому, в чем Вы нуждаетесь
2 Указывает, что максимальный размер файла, определенный вручную, в на сценарии страницы, был превышен
3 Указывает, что файл был только загружен частично
4 Указывает, что файл не был указан (пустое поле файла)
5 Не определенный все же
6 Указывает, что нет никакой временной папки
7 Указывает, что файл не может быть записан в диск
php.ini
КонфигурацияПри выполнении этой установки с большими файлами можно получить ошибки. Проверьте Ваш php.ini
файл для этих ключей:
max_execution_time = 30
upload_max_filesize = 2M
Увеличивание этих значений как соответствующие может помочь. При использовании Apache изменения в этом файле требуют перезапуска.
Максимальная память разрешила значение (набор через memory_limit
) не играет роль здесь, поскольку файл записан в tmp каталог, поскольку это загружается. Через местоположение tmp каталога дополнительно управляют upload_tmp_dir
.
Необходимо проверить тип файла того, что пользователь загружает - лучшая практика должна проверить против списка позволенных типов файлов. Потенциальный риск разрешения любого файла состоит в том, что пользователь мог потенциально загрузить код PHP на сервер и затем выполнить его.
Можно использовать очень полезное fileinfo
расширение (который заменяет более старое mime_content_type
функция) для проверки типов пантомимы.
// FILEINFO_MIME set to return MIME types, will return string of info otherwise
$fileinfo = new finfo(FILEINFO_MIME);
$file = $fileinfo->file($_FILE['filename']);
$allowed_types = array('image/jpeg', 'image/png');
if(!in_array($file, $allowed_types))
{
die('Files of type' . $file . ' are not allowed to be uploaded.');
}
// Continue
Можно читать больше при обработке загрузок файла в руководстве PHP.net.
//For those who are using PHP 5.3, the code varies.
$fileinfo = new finfo(FILEINFO_MIME_TYPE);
$file = $fileinfo->file($_FILE['filename']['tmp_name']);
$allowed_types = array('image/jpeg', 'image/png');
if(!in_array($file, $allowed_types))
{
die('Files of type' . $file . ' are not allowed to be uploaded.');
}
// Continue
Можно читать больше на FILEINFO_MIME_TYPE в документации PHP.net.
Имейте чтение это введение , который должен сказать Вам все, что необходимо знать. Комментарии пользователей довольно полезны также.
Основное преимущество Flash - он, позволяет Вам загружать несколько файлов. Основное преимущество Java - он, позволяет перетаскивание от файловой системы. Извините за не ответ на центральный вопрос, но я думал, что добавлю это, поскольку это довольно просто.
Безопасность является довольно большой вещью относительно загрузок файла, добавляя .htaccess к папке загрузок, которая останавливается, сценарии, выполняемые от него, могли быть удобными для добавления просто дополнительного уровня безопасности.
Ссылка .htaccess
Options -Indexes
Options -ExecCGI
AddHandler cgi-script .php .php3 .php4 .phtml .pl .py .jsp .asp .htm .shtml .sh .cgi