2017-10-07 89 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"] 

希望帮助:)