我在创建应用程序时遇到问题,用户提交一个文件然后它被分析。
我遇到的问题是我无法正确上传文件,当它达到 100% 上传时(在 chrome 状态栏中通知)它再次启动,然后当页面加载时,告诉我没有收到文件!
这是我的代码:
#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保存在里面,然后消除压缩
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;
}
如果文件包含与 zip 同名的 txt 文件,则 decomprime 代码//只是解压缩
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
有什么我想念的吗?