#php #file-upload #expression-web
#php #загрузка файла #выражение-веб
Вопрос:
Используя Expression Web, хочу загрузить изображения на свои веб-страницы, не получая сообщений об ошибках, даже если они написаны скриптом. Установите для папки загрузки общий доступ ко всем. php.ini
установлено значение file_uploads=on;upload_max_size=128M
. В Firefox время ожидания скрипта истекает, а в IE «Internet Explorer не может отобразить страницу».
Я искал ответы неделями. Любой другой скрипт, который я пробовал, работает, хотя я новичок в php. Эта проблема с загрузкой заставила меня почесать голову. Последняя попытка загрузки скрипта:
if (isset($_POST['submitted'])) {
// Check for an uploaded file:
if (isset($_FILES['upload'])) {
// Validate the type. Should be JPEG or PNG.
$allowed = array ('image/pjpeg', 'image/jpeg', 'image/JPG', 'image/X-PNG', 'image/PNG', 'image/png', 'image/x-png');
if (in_array($_FILES['upload']['type'], $allowed)) {
$target_path = "C:/uploads/";
$name=$_FILES['upload']['name'];
$error=$_FILES['upload']['error'];
$tmp_name=$_FILES['upload']['tmp_name'];
if($error==UPLOAD_ERR_OK){
if($_FILES['upload']['size']>0){
move_uploaded_file($tmp_name, $target_path.$name);
print ("The file ".$name." has been uploaded.n");
} else{
print ("There was an error uploading the file, please try again!n");
}
}elseif ($error==UPLOAD_ERR_NO_FILE) {
print("No files specified.n");
}else{
print("Upload failed.n");
}
print("n");
}//End of !in_array IF.
} // End of isset($_FILES['upload']) IF.
} // End of the submitted conditional.
?>
<div>
<form action="photogallery.php" enctype="multipart/form-data" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="524288" />
<p><b>File:</b><input name="upload" type="file" /></p>
<input name="submit" type="submit" value="Submit" />
<input name="submitted" type="hidden" value="TRUE" />
</form>
</div>
Я пытаюсь загрузить изображения в папку загрузки в моем каталоге, а затем отобразить на моей веб-странице. Я поместил изображения в папку вручную, и они будут отображаться на моей веб-странице по ссылке, но это не сработает с использованием этих скриптов. Мой сайт не запущен, он находится в разработке, и я использую XAMPP и Microsoft development Server.
Комментарии:
1.
if (question.title.match(/!{2,}/)) { question.close() }
2. странно, что это работает.. Я просто скопировал вставил весь код и назвал его
photogallery.php
, создал каталог загрузки и попытался загрузить. Однако я использую WAMP (php 5.3.5).
Ответ №1:
Фактическую ошибку трудно определить. Но есть несколько моментов, о которых следует упомянуть в вашем скрипте (типичные проблемы со скриптом загрузки):
['name']
Константа может быть пустой, что объясняет ошибку загрузки.- Но он также может быть изменен и содержать такие вещи, как
"../Windows/System.ini"
, что было бы не очень хорошо для вашего скрипта, поскольку вы используете его нефильтрованным в качестве выходного имени файла. - MIME
['type']
также ненадежен. Но, скорее всего, проблема здесь не в этом. По крайней мере, используйтеstrtolower()
на нем вместо того, чтобы перечислять несколько альтернатив MIME. - Наконец, включите,
error_reporting(E_ALL);
который сообщит вам, являются ли проблемы с разрешением move_upload_file() проблемой.
Я бы посоветовал вам начать с простого
move_uploaded_file($_FILES["upload"]["tmp_name"], "C:/uploads/test.1");
А затем постепенно дополните его другими вашими условиями, чтобы найти причину вашей проблемы с загрузкой.