2017-10-07 25 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 [ 'イマヘン'] [ 'tmp_name']、$のdirectorio $ imagenNombre)。$ _FILES ['imagen'] ['tmp_name']をjqueryに送信できないためです。どうすれば修正できますか?

Variables

答えて

0

私の経験から、私はこれはファイルがアップロードされますときにサーバーに保存されたファイルの一時的な場所を指すtmp_nameを取得することが可能であろうと思ういけません。あなたがやりたいことは、ajaxを使ってファイルをアップロードすることです。 jQueryので

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

、その後:それは類似したが、すでに以下のhtmlに示すように、あなたはFILEDATAを使用して、イメージオブジェクトを送信することができますAjaxで:)

をやっていることに影響を与え得る必要があります。アップロードボタンのクリックイベントに:あなたのphpファイル内

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'); 
        } 
       }); 

してから(私の例では、「upload.php」と呼ばれる)することができますユーザーの$ _fileオブジェクトファイルを取得した後、そこから任意の情報を引き出します:)

を助け、そのよう...

$_FILES["csv-upload-file"] 

うまくいけば、

関連する問題