2017-10-07 54 views
0

我需要解決一個小問題。 我試圖用jQuery發送tmp圖像,但結果未定義。 我的代碼:用jquery輸入文件變量

$(document).on("click",".subImagen", function(e) { 

    // VARIABLES 
    //var imagen = $('#sbImagen').val(); 
    var imagen = $('#sbImagen')[0].files[0]; 
    var imagenSize = $('#sbImagen')[0].files[0].size; 
    var imagenNombre = $('#sbImagen')[0].files[0].name; 
    var imagenType = $('#sbImagen')[0].files[0].type; 
    var params = '&imagen='+imagen+'&imagenSize='+imagenSize+'&imagenNombre='+imagenNombre+'&imagenType='+imagenType;  

    // ENVIO DE VARIABLES 
    $.post('classes/subirImagen', params, function(jsondatareg){    
     if(jsondatareg.validacion == 'exito'){ 
      var url = 'inventario_f'; 
      swal({ 
       title: "IMAGEN SUBIDA", 
       text: jsondatareg.mensaje, 
       timer: 2500, 
       type: "success", 
       showConfirmButton: false 
      }); 
      setTimeout(function() { 
       window.location = url; 
      }, 3000); 
     } 
     if(jsondatareg.validacion == 'error'){    
      swal({ 
       title: "ERROR", 
       text: jsondatareg.mensaje, 
       timer: 2500, 
       type: "error", 
       showConfirmButton: false 
      }); 
     } 
    },'json'); 
}); 

此代碼工作正常,但我需要發送不對tmp_name了。

PHP代碼:

<?php 
header("Content-Type: text/html;charset=utf-8"); 

$imagen = $_REQUEST['imagen']; 
$imagenSize = $_REQUEST['imagenSize']; 
$imagenNombre = $_REQUEST['imagenNombre']; 
$imagenType = $_REQUEST['imagenType']; 

if (($imagenNombre == !NULL) && ($imagenSize <= 20000000)){ 
    if ($imagenType == "image/png"){ 
     $directorio = $_SERVER['DOCUMENT_ROOT'].'/assets/images/productos/'; 
     move_uploaded_file($_FILES['imagen']['tmp_name'],$directorio.$imagenNombre); 
     $datareg['validacion'] = 'exito'; 
     $datareg['mensaje'] = "SE HA SUBIDO LA IMAGEN CORRECTAMENTE."; 
    }else{ 
     $datareg['validacion'] = 'error'; 
     $datareg['mensaje'] = "LA IMAGEN QUE INTENTAS SUBIR NO TIENE EL FORMATO .PNG"; 
    } 
}else{ 
    if($imagenNombre == !NULL){ 
     $datareg['validacion'] = 'error'; 
     $datareg['mensaje'] = "LA IMAGEN SUPERA EL TAMAÑO PERMITIDO."; 
    }else{ 
     $datareg['validacion'] = 'error'; 
     $datareg['mensaje'] = "NO HAS PUESTO NINGUNA IMAGEN."; 
    } 
} 
echo json_encode($datareg); 
?> 

問題是下一行:move_uploaded_file($ _ FILES [ 'imagen畫質'] [ 'tmp_name的值'],$ $上級目錄imagenNombre);,因爲我不能用jquery發送$ _FILES ['imagen'] ['tmp_name']。我該如何解決這個問題?

Variables

回答

0

從我的經驗,我認爲這將有可能得到tmp_name的值,因爲這是指存儲在服務器上的文件的臨時位置,當一個文件被上傳。你可能想要做的就是使用ajax上傳文件。它應該達到類似的效果,以什麼你已經做:)

使用Ajax,你可以發送郵件使用的FileData您的圖像對象如下圖所示的HTML:

<form class="form" action="" method="POST" enctype="multipart/form-data"> 
    <input type="file" name="upload-file"> 
</form> 

,然後在JQuery中。在上傳按鈕單擊事件:

var formData = new FormData($('.form')[0]); 

       $.ajax({ 
        url: "upload.php", 
        type: "POST", 
        data: formData, 
        contentType: false, 
        cache: false, 
        processData:false, 
        success: function(data) 
        { 
         console.log('success'); 
        } 
       }); 

,然後在你的PHP文件(在我的例子,叫做「upload.php的」),你可以在用戶$ _FILE對象,讓您的文件,然後能從中得到的任何信息這樣...

$_FILES["csv-upload-file"] 

希望幫助:)