2012-04-20 2 views
0

У меня есть следующий PHP, который загружает файл на сервер с именем вставленного в базе данных:PHP: Загрузить изображение с именем изображения, добавленным HTTP Path?

<?php 

//Uploading File to server php folder// 
$uploaddir = ''; //Uploading to same directory as PHP file 

$file = basename($_FILES['userfile']['name']); 

$uploadFile = $file; 

$randomNumber = rand(0000, 99999); 

$newName = $uploaddir . $randomNumber . $uploadFile; 

if (is_uploaded_file($_FILES['userfile']['tmp_name'])) { 
echo "Temp file uploaded. \r\n"; 
} 

else { 
echo "Temp file not uploaded. \r\n"; 
} 


if (move_uploaded_file($_FILES['userfile']['tmp_name'], $newName)) { 
$postsize = ini_get('post_max_size'); 
$canupload = ini_get('file_uploads'); 
$tempdir = ini_get('upload_tmp_dir'); 
$maxsize = ini_get('upload_max_filesize'); 
echo "http://localhost/abc/images/{$newName}" . "\r\n" . $_FILES['userfile']['size'] . "\r\n" . $_FILES['userfile']['type'] ; 
} 



//Making sql db connection to store image path in db table// 

$host = "localhost"; 

$username = "root"; 
$password = "****"; 

$database = "userauth"; 

mysql_connect($host, $username); 

mysql_select_db($database) or die("Unable to find database"); 

$image = $_GET["images"]; 

$qry = "INSERT INTO image VALUES ('','$newName')"; 

mysql_query($qry); 

mysql_close(); 
    ?> 

Вышеприведенный код легко загружать файлы с временным именем: upload_image предваряется путем случайного числа на пути следующие папки XAMPP: http://localhost/abc/images/

В таблице db i rev имя изображения отображается как «randomnumber »upload_image.jpg. Мне нужна таблица db для отображения имени изображения вместе с полным путем как http://localhost/abc/images/ 'rand.number'upload_image.jpg

Как я могу достичь этого?

Я пытался заменить UploadDir с «HTTP: // локального/а/изображений /» и пытался добавить его на новое имя файла, но он возвратил следующее предупреждение:

<b>Warning</b>: move_uploaded_file(http://localhost/abc/images/33760upload_image.jpg) [<a href='function.move-uploaded-file'>function.move-uploaded-file</a>]: failed to open stream: HTTP wrapper does not support writeable connections in <b>/Applications/XAMPP/xamppfiles/htdocs/xampp/abc/images/imageupload.php</b> on line <b>24</b><br /> 
<br /> 
<b>Warning</b>: move_uploaded_file() [<a href='function.move-uploaded-file'>function.move-uploaded-file</a>]: Unable to move '/Applications/XAMPP/xamppfiles/temp/phpdlCc5N' to 'http://localhost/abc/images/33760upload_image.jpg' in <b>/Applications/XAMPP/xamppfiles/htdocs/xampp/abc/images/imageupload.php</b> on line <b>24</b> 
<br /> 

Ценных рекомендации, необходимых.

PS: установлено разрешение на чтении и записи Таблицы содержит два поля: ID и изображение с идентификатором набором начального и автоматического приращением

ответ

1

http://php.net/manual/en/reserved.variables.server.php

с $_SERVER массивом вы можете получить доступ к некоторым деталям запроса HTTP , например путь

вы не должны пытаться переместить загруженный файл из/в протокол readonly, такой как http. вместо этого просто получите его из каталога php tmp. также не запускайте имя файла, подобное этому, перемещая его, что вызывает ошибки, которые я думаю.

+0

Я попытался реализовать массив $ _Server, но потерпел неудачу. Есть ли разница между Xampp и MAMP .. Я ДОЛЖНА предпочитаю MAMP над Xampp – madLokesh

+0

получаю следующее сообщение об ошибке:
Предупреждение: move_uploaded_file (HTTP: //localhost/abc/images/96818upload_image.jpg) [function.move-uploaded-file]: не удалось открыть поток: HTTP-обертка не поддерживает записываемые соединений в /Applications/XAMPP/xamppfiles/htdocs/xampp/abc/images/imageupload.php на линии

madLokesh

+0

Предупреждение: move_uploaded_file() [function.move-uploaded-file] : Невозможно переместить '/ Applications/XAMPP/xamppfiles/temp/phpcM4Ln7' в 'http: // localhost/abc/images/96818u pload_image.jpg»в /Applications/XAMPP/xamppfiles/htdocs/xampp/abc/images/imageupload.php на линии
madLokesh

Смежные вопросы