0

アプリケーションの作成に問題があります。ユーザーがファイルを送信すると、ファイルが分析されます。

私が抱えている問題は、ファイルを適切にアップロードできないことです.100%のアップロードに達すると(クロムステータスバーに通知されます)、再び開始され、ページが読み込まれると、ファイルが受信されなかったことがわかります!!

ここに私のコードがあります:

 #upload form //just a basic form

 <form id="form1" name="form1" method="post" action="test_lib_valida.php"  

enctype="multipart/form-data">
  <tr>
    <td align="center" class="info">OPERACIÓN</td>
  </tr>
  <tr>
    <td align="center"><label for="oper2"></label>
      <select name="oper2" id="oper2">
        <option value="1" selected="selected">Altas</option>
        <option value="2">Bajas</option>
        <option value="3">Cambios</option>
      </select></td>
  </tr>
  <tr>
    <td align="center"><label for="archivo2">Seleccione archivo</label>
      <input type="file"  name="archivo2" id="archivo2" multiple /></td>
  </tr>
</table>
</form>

PHP 側では、 // ファイルを取得して、今のところ保存されている場所を表示します

$tam_allow=7454720000;//max filezise
$tipos=array("application/octet-stream","application/x-zip-compressed","text/plain");//allowed types
$ext=array("zip","txt");//allowed exts
$what=getArchivo("archivo","elarchivonuevo","recibidos/",$tam_allow,$ext,$tipos);
echo "El archivo queda en:".$what[1];
showinfo("archivo");

そして getArchivo 関数 // ファイルを取得して適切なフォルダーに送信し、ファイルを見つけるための最終的な URL を返します。圧縮されている場合は、ファイルを解凍して txt を内部に保存し、zip を削除します。

    function getArchivo($nombre,$nuevo_nom,$ruta,$maxsizeb=204800000000000,$allowedExts = array("txt"),$tipos)//verifica un archivo subido y lo mueve a la carpeta especificada, la ruta va con diagonal recibidos/, si tiene exito regresa [0]1 y [1]ruta archivo
{
//verifica el nombre del folder, 1 para cada dependencia, la cve de la dependencia esta en la variable de sesion "id_dep"
$extension = end(explode(".", $_FILES["$nombre"]["name"]));
//variable de sesion para obtener la extension fuera de aqui
      if(!$nuevo_nom)
      $nuevo_nom=$nombre;
      if($tipos)
      $tip= in_array($_FILES["$nombre"]["type"],$tipos);
      else
      $tip=1;
if (
    $tip
    && 
    ($_FILES["$nombre"]["size"] < $maxsizeb)
    && 
    in_array($extension, $allowedExts)
   )
  {
  if ($_FILES["$nombre"]["error"] > 0)//error de subida
    {
      if($_FILES["$nombre"]["error"]==UPLOAD_ERR_PARTIAL)//no subio completo
        {
            mensaje("Archivo Recibido Parcialmente, intentelo de nuevo");
            //redirige("index_2.php");
        }
        else
    mensaje("Error de subida: " . $_FILES["$nombre"]["error"]);
    //redirige("index_2.php");
    $result[0]=0;
    }
  else
    {
  //showinfo("archivo");
  //ya paso, va pa su carpeta
      try
      {
              //echo ("$ruta" . $nuevo_nom.'.'.$extension);
          if($extension=='zip')//viene comprimido
          {
          //mensaje("archivo Comprimido detectado");
          move_uploaded_file($_FILES["$nombre"]["tmp_name"],$ruta.$_FILES["$nombre"]["name"]);
          //mensaje("moviendo:".$_FILES["$nombre"]["tmp_name"]." como ".$ruta.$_FILES["$nombre"]["name"]);
          descomprime($ruta.$_FILES["$nombre"]["name"],$ruta);
          //mensaje("descomprimiendo:".$ruta.$_FILES["$nombre"]["name"]." en ".$ruta);
          //cambiamos nombre al archivo
          rename(str_replace('zip','txt',$ruta.$_FILES["$nombre"]["name"]),$ruta.$nuevo_nom.'.txt');
          //como se llamo
          $_SESSION["recibido"]=$_FILES[$nombre]["name"];
          $_SESSION["formato"]=$extension;
          $_SESSION["tamano"]=$_FILES[$nombre]["size"];
          //quitamos el zip
          unlink($ruta.$_FILES["$nombre"]["name"]);
          $result[0]=1;
          $result[1]=$ruta . $nuevo_nom.'.txt';
          }
          else//es txt
          {
            move_uploaded_file($_FILES["$nombre"]["tmp_name"],$ruta.$nuevo_nom.'.txt');  
          $_SESSION["recibido"]=$_FILES[$nombre]["name"];
          $_SESSION["formato"]=$extension;
          $_SESSION["tamano"]=$_FILES[$nombre]["size"];
          $result[0]=1;
          $result[1]=$ruta . $nuevo_nom.'.txt';
          }
      }
          catch (Exception $e)
          {    
         mensaje($e->getMessage());
         }
    }
  }
else
  {
  mensaje("ARCHIVO NO PERMITIDO, POR EL MOMENTO SOLO SE ACEPTAN ARCHIVOS EXTENSION (ZIP,TXT)");
  //redirige("index_2.php");
  $result[0]=0;
  $result[1]="";
  //info del archivo
  //showinfo("archivo");
  }
  return $result;
}

そして、descomprime コードは、//ファイルに zip と同じ名前の txt ファイルが含まれている場合にのみ解凍します

function descomprime($nomarch,$ruta)//takes the file and decompresses it if its a zip file
 {
try
{
     $zip = new ZipArchive;
     $res = $zip->open($nomarch);
     $nombrebusca=str_replace("zip","txt",$nomarch);
     $nombrebusca= basename($nombrebusca);
    $esta= $zip->locateName($nombrebusca);
    if($esta===0)//verifica que lo de adentro se llame como lo de afuera
    {
     if ($res === TRUE) {
         $zip->extractTo($ruta);
         $zip->close();
              mensaje("Archivo descomprimido correctamente:".$esta);
         //echo 'ok';
     } else {
         mensaje ('Problema al descomprimir el Archivo, Por favor verifique que se pueda descomprimir');
         //redirige("index_2.php");
     }
        }
    else
    {
     mensaje ('El archivo comprimido no contiene el archivo de texto requerido');
     //redirige("index_2.php");
    }
}
catch (Exception $e)
{
    echo $e->getMessage();
    }
 }

mensaje 関数は、javascript を介してアラートを送信するだけです

奇妙なことに、ラップトップのインストールでは魅力的に機能しますが、サーバーのインストールではエラーが表示されます。問題は、すべてのphpとapache confが両方のインストールで同じであることです。今、何が起こっているのか疑問に思っています!!

3 MB ほどの小さなファイルからでもエラーが発生します。下位のファイルはすべて通過します。

Error 324 (net::ERR_EMPTY_RESPONSE):アプリケーションから、ファイルが無効であるという応答が返されることがあります。

私が持っているphpで

memory limit=512
upload_max_filesize 100M
post_max_size 100M
max_input_time 300
max_execution_time 300
//And all the folders have 777 permission

私が行方不明の何かがありますか?

4

0 に答える 0