2016-11-14 5 views
1

Так что я сделал сайт для загрузки файлов, и загрузка файла работает хорошо. Но проблема в том, что позже, когда я хочу отредактировать файл (заменить), файл не обновляется так, как должен.Редактированный загруженный файл

У меня возникли проблемы, когда я загружаю файл заглавными буквами, я использую «strtolower». Когда я хочу заменить этот файл «Правка», «strtolower», похоже, не работает, и я не могу получить доступ к файлу. Имя файла отображается в таблице, но когда я нажимаю «Вид», он не получает файл, а затем он загружается на сервер.

Вот код для загрузки, и edit.php .:

if(isset($_POST['btn-upload'])) 
{  

$file = rand(1000,100000)."-".$_FILES['file']['name']; 
$file_loc = $_FILES['file']['tmp_name']; 
$file_size = $_FILES['file']['size']; 
$file_type = $_FILES['file']['type']; 
$first_name = $_POST['first_name']; 
$last_name = $_POST['last_name']; 
$user_city = $_POST['user_city']; 
$sifra = $_POST['sifra_izvoda']; 
$folder="uploads/"; 



$new_size = $file_size/1024; 

mb_internal_encoding('UTF-8'); 

$new_file_name = mb_strtolower($file); 


$final_file = str_replace(' ','-',$new_file_name); 

if(move_uploaded_file($file_loc,$folder.$final_file)) 
{ 
    $sql="INSERT INTO tbl_uploads(file,type,size,first_name,last_name,user_city,sifra) VALUES('$final_file','$file_type','$new_size','$first_name','$last_name','$user_city','$sifra')"; 
    mysql_query($sql); 
    ?> 
    <script> 
    alert('Izvod je dodan'); 
    window.location.href='view.php?success'; 
    </script> 
    <?php 
} 

Вот код, когда я хочу, чтобы редактировать загруженный файл:

if(isset($_GET['edit_id'])) 
{ 
$sql_query="SELECT file, type, size, first_name, last_name, user_city, sifra FROM tbl_uploads WHERE id=".$_GET['edit_id']; 
$result_set=mysql_query($sql_query); 
$fetched_row=mysql_fetch_array($result_set); 
} 
if(isset($_POST['btn-update'])) 
{ 
    $file = rand(1000,100000)."-".$_FILES['file']['name']; 
    $file_loc = $_FILES['file']['tmp_name']; 
    $file_size = $_FILES['file']['size']; 
    $file_type = $_FILES['file']['type']; 
    $first_name = $_POST['first_name']; 
    $last_name = $_POST['last_name']; 
    $user_city = $_POST['user_city']; 
    $sifra = $_POST['sifra_izvoda']; 
    $folder="uploads/"; 

    $new_size = $file_size/1024; 

    mb_internal_encoding('UTF-8'); 

    $new_file_name = mb_strtolower($file); 


    $final_file = str_replace(' ','-',$new_file_name); 

    $tmp = move_uploaded_file($file_loc,$folder.$final_file); 

    $insert_file = ($_FILES['file']['name'])?"file='$file', type='$file_type',  size='$file_size',":''; 

$sql_query = "UPDATE tbl_uploads SET $insert_file first_name='$first_name', last_name='$last_name', user_city='$user_city', sifra='$sifra' WHERE id=".$_GET['edit_id']; 


if(mysql_query($sql_query)) 
{ 
    header("Location: view.php"); 
?> 
+1

Каждый раз, когда вы используете [mysql_'] (http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php) расширение в новом коде ** [Котенок задушен где-то в мире] (http://2.bp.blogspot.com/-zCT6jizimfI/UjJ5UTb_BeI/AAAAAAAACgg/AS6XCd6aNdg/s1600/luna_getting_strangled.jpg) ** он устарел и был в течение многих лет и ушел навсегда в PHP7. Если вы просто изучаете PHP, потратьте свои силы на изучение расширений базы данных «PDO» или «mysqli». [Начать здесь] (http://php.net/manual/en/book.pdo.php) – RiggsFolly

+1

** Вы широко открыты для [SQL Injections] (http://php.net/manual/en/security .database.sql-injection.php) ** и должен действительно использовать [Подготовленные утверждения] (http://php.net/manual/en/mysqli.quickstart.prepared-statements.php) вместо объединения ваших запросов. Специально, потому что вы не избегаете их вообще! Подготовленные утверждения могут использоваться, если вы используете MySQLi или PDO, а не те, которые упомянуты выше, устаревшие функции mysql_ *. –

+1

Почему вы фактически не используете $ final_file-name в запросе обновления? По какой-то причине вы используете исходное имя файла вместо обновленного имени файла? Это, вероятно, ваша проблема ... – junkfoodjunkie

ответ

0

Ok решение было, как это:

$new_size = $file_size/1024; 

    mb_internal_encoding('UTF-8'); 
    $new_file_name = mb_strtolower($file); 
    $final_file = str_replace(' ','-',$new_file_name); 
    $tmp = move_uploaded_file($file_loc,$folder.$final_file); 

    $insert_file = ($_FILES['file']['name'])?"file='$final_file', type='$file_type', size='$file_size',":''; 


$sql_query = "UPDATE tbl_uploads SET $insert_file first_name='$first_name', last_name='$last_name', user_city='$user_city', sifra='$sifra' WHERE id=".$_GET['edit_id']; 

Я добавил файл = '$ final_file в запросе , и теперь он правильно обновляется

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