アプリケーションの作成に問題があります。ユーザーがファイルを送信すると、ファイルが分析されます。
私が抱えている問題は、ファイルを適切にアップロードできないことです.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
私が行方不明の何かがありますか?