2017-12-31 177 views
1

방금 ​​이미지를 업로드하는 스크립트를 작성했는데 오래 동안 확인했지만 오류가 어디인지 찾을 수 없습니다. 전체 코드는 수행해야 할 작업을 수행하지만 move_uploaded_file(); 기능은하지 않습니다.move_uploaded_file(); 작동하지 않습니다

HTML :

<form method="post" id="img-form" enctype="multipart/form-data"> 
Subir imagen: <input type="file" name="file"> 
</form> 
<div id="respuesta"></div> 

JS :

$(function(){ 
$("input[name='file']").on("change", function(){ 
var formData = new FormData($("#img-form")[0]); 
$.ajax({ 
    url: "ajax/uploadimage.php", 
    type: "POST", 
    data: formData, 
    contentType: false, 
    processData: false, 
    success: function(data) 
     { 
     $("#respuesta").html(data); 
     } 
    }); 
}); 
}); 

PHP :

<?php 
require '../init.php'; 

if (isset($_FILES["file"])) 
{ 
    $file = $_FILES["file"]; 
    $nombre = $file["name"]; 
    $type = $file["type"]; 
    $ruta_provisional = $file["tmp_name"]; 
    $size = $file["size"]; 
    $gethandw = getimagesize($ruta_provisional); 
    $width = $gethandw[0]; 
    $height = $gethandw[1]; 
    $path = "img/users/"; 

    if ($type != 'image/jpg' && $type != 'image/jpeg' && $type != 'image/png' && $type != 'image/gif') 
    { 
     echo "Error, el archivo no es una imagen"; 
    } 
    else if ($size > 1024*1024) 
    { 
     echo "Error, el tamaño máximo permitido es un 1MB"; 
    } 
    else if ($width > 400 || $height > 400) 
    { 
     echo "Error la anchura y la altura maxima permitida es 500px"; 
    } 
    else if($width < 60 || $height < 60) 
    { 
     echo "Error la anchura y la altura mínima permitida es 60px"; 
    } 
    else 
    { 
     $src = $path.$nombre; 
     move_uploaded_file($ruta_provisional, $src); 
     echo "<img src='$src'>"; 
    } 
} 

대답 (데이터)의 출력 여기 내 코드는 모든 것이 정확하지만 이미지가 어디에도 업로드되지 않습니다. 테스트를 위해 xampp을 사용하고 있습니다.

+0

나는 어떤 오류가 볼 수 없습니다. 업로드되지 않았습니까? img/users/디렉토리를 확인하십시오. – halojoy

+2

웹 서버에'img/users' 디렉토리에 대한 쓰기 권한이 있습니까? –

+0

다음과 같이 시도 할 수 있습니다. if (isset ($ _ FILES [ "file"] [ "name"])) – halojoy

답변

0

PHP 코드는 괜찮아 보입니다. FormData를 구현할 때 몇 가지 문제점을 발견했습니다. 아래의 코드를 시도하십시오

JS

$(function(){ 
    $("input[name='file']").on("change", function() { 
     var formData = new FormData(); 
     formData.append('file', $(this)[0].files[0]); 
     $.ajax({ 
      url: "ajax/uploadimage.php", 
      type: "POST", 
      data: formData, 
      contentType: false, 
      processData: false, 
      success: function(data) { 
       $("#respuesta").html(data); 
      } 
     }); 
    }); 
}); 

여전히 어려움을 겪고있는 경우 알려 주시기 바랍니다. 희망이 도움이됩니다. 감사합니다

+0

여전히 같은 일이 발생합니다. –