2015-08-03 1 views
1

У меня нет ошибок при запуске этого скрипта. Он создает нужные каталоги, но изображение не перемещается и не загружается. Это не лучший код в мире, но я чувствую, что нахожусь на правильном пути для того, что мне нужно. Я знаю, что мне все еще нужно избегать ввода пользователем и ограничивать типы файлов изображениями только на стороне сервера.Загрузка изображения с PHP не работает - нет ошибок

Может ли кто-нибудь сказать мне/показать мне, как улучшить этот код?

require ($_SERVER['DOCUMENT_ROOT'].'/settings/global.php'); 
session_start(); 
$fName = $_POST['first_name']; 
$lName = $_POST['last_name']; 
$dob = $_POST['dob']; 
$dod = $_POST['dod']; 
$born = $_POST['born']; 
$image = $_FILES['image']; 
$about = $_POST['about']; 
$started = $_POST['started']; 
$company = $_POST['company']; 

$name = $lName.$fName; 
$name1 = substr($name, 0, 1); 
$name2 = substr($name, 0, 2); 
$name3 = substr($name, 0, 3); 
$name4 = substr($name, 0, 4); 

    $imagePath = $_SERVER['DOCUMENT_ROOT']."/images/fallenIcons/".$name1."/".$name2."/".$name3."/".$name4."/".$name."/"; 

    $imageStorePath = "http://example.com/images/fallenIcons/".$name1."/".$name2."/".$name3."/".$name4."/".$name."/"; 


if (!file_exists($imagePath)) { 
    mkdir($imagePath, 0777, true); 
} 

$filename = $_FILES["image"]["name"]; 
$extension = end(explode(".", $filename)); 
$newfilename = $name .".".$extension; 

$image = $imageStorePath.$newfilename; 

move_uploaded_file($_FILES[ 'image' ][ 'tmp_name' ], $imageStorePath.$newfilename); 

$mysqli=mysqli_connect(HOST,USERNAME,PASSWORD,'fallenPEVORecords'); 
$query = "INSERT INTO fallenPEVOEntries (first_name,last_name,date_of_birth,date_of_death,born_in,main_image,pevo_details,year_started,worked_for,approved) 
           VALUES 
          ('$fName','$lName','$dob','$dod','$born','$image','$about','$started','$company','pending')"; 
$result = mysqli_query($mysqli,$query)or die(mysqli_error()); 

if($result) { 
    header('Location: http://example.com/fallen/addFallen.php'); 
    echo 'true'; 
} 
else{ 
echo 'false'; 
} 

HTML:

<form action="http://example.com/scripts/php/addFallen.php" method="post"> 
     <ul> 
       <li> 
       <label for="first_name">First Name</label> 
      <input type="text" size="30" name="first_name"/> 
      </li> 
      <li> 
       <label for="last_name">Last Name</label> 
      <input type="text" size="30" name="last_name"/> 
      </li> 
      <li> 
       <label for="dob">Date of Birth</label> 
      <input type="text" size="30" name="dob" class="datepicker"> 
      </li> 
      <li> 
       <label for="dod">Date of Passing</label> 
      <input type="text" size="30" name="dod" class="datepicker"> 
      </li> 
      <li> 
       <label for="born">Born In [City, State]</label> 
      <input type="text" size="30" name="born"/> 
      </li> 
      <li> 
       <label for="image">Image</label> 
      <input type="file" name="image" enctype="multipart/form-data" accept="image/x-png, image/gif, image/jpeg"/> 
      </li> 
      <li> 
       <label for="about">About The PEVO</label> 
      <textarea name="about" rows="8" cols="45"></textarea> 
      </li> 
      <li> 
       <label for="started">When did this PEVO start piloting? [Year]</label> 
      <input type="text" name="started" class="date-picker-year"> 
      </li> 
      <li> 
       <label for="company">Company Worked For</label> 
      <input type="text" name="company" size="30"> 
      </li> 
        <li> 
        <label></label> 
      <input type="submit" name="addFallen" value="Submit"> 
      </li> 
      <li> 
      <b>ALL SUBMISSIONS MUST BE APPROVED BY AN ADMIT BEFORE THEY APPEAR!</b> 
      </li> 
     </ul> 
     </form> 

EDIT Просто модифицирована, как вы получите ваш добавочный номер

<?php 
require ($_SERVER['DOCUMENT_ROOT'].'/settings/global.php'); 
session_start(); 
$fName = $_POST['first_name']; 
$lName = $_POST['last_name']; 
$dob = $_POST['dob']; 
$dod = $_POST['dod']; 
$born = $_POST['born']; 
$image = $_FILES['image']; 
$about = $_POST['about']; 
$started = $_POST['started']; 
$company = $_POST['company']; 

$name = $lName.$fName; 
$name1 = substr($name, 0, 1); 
$name2 = substr($name, 0, 2); 
$name3 = substr($name, 0, 3); 
$name4 = substr($name, 0, 4); 

    $imagePath = $_SERVER['DOCUMENT_ROOT']."/images/fallenIcons/".$name1."/".$name2."/".$name3."/".$name4."/".$name."/"; 

    $imageStorePath = "http://example.com/images/fallenIcons/".$name1."/".$name2."/".$name3."/".$name4."/".$name."/"; 


if (!file_exists($imagePath)) { 
    mkdir($imagePath, 0777, true); 
} 

$filename = $_FILES["image"]["name"]; 
$extension = pathinfo($filename); 
$extension = (isset($extension[ 'extension' ]) && trim($extension[ 'extension' ]) ? $extension[ 'extension' ] : ''); 
$newfilename = $name .".".$extension; 

$image = $imageStorePath.$newfilename; 

move_uploaded_file($_FILES[ 'image' ][ 'tmp_name' ], $image); 

$mysqli=mysqli_connect(HOST,USERNAME,PASSWORD,'fallenPEVORecords'); 
$query = "INSERT INTO fallenPEVOEntries (first_name,last_name,date_of_birth,date_of_death,born_in,main_image,pevo_details,year_started,worked_for,approved) 
           VALUES 
          ('$fName','$lName','$dob','$dod','$born','$image','$about','$started','$company','pending')"; 
$result = mysqli_query($mysqli,$query)or die(mysqli_error()); 

if($result) { 
    header('Location: http://example.com/fallen/addFallen.php'); 
    echo 'true'; 
} 
else{ 
echo 'false'; 
} 

ответ

1

Первый аргумент в move_uploaded_file() является временный файл загруженного файла, здесь вы даете ей еще одну вещь

move_uploaded_file($image, $imagePath.$newfilename); 

Должно быть

move_uploaded_file($_FILES[ 'image' ][ 'tmp_name' ], $imagePath.$newfilename); 
+0

изменил его, но все еще не переместить файл. –

+0

В вашей форме вы уверены, что имеете атрибут 'enctype =" multipart/form-data "? – Jajo

+0

Я выложу свой html :) Я должен был это сделать с самого начала. –

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