Saludos tengo el siguiente formulrio para subir un archivo con ajax y php:
Código HTML:
<form action="../php/upload_catalogs.php" method="post" enctype="multipart/form-data">
<h3>Subir Catálogos al sistema.</h3>
<table>
<tr><td>Nombre:</td><td><input type="text" name="txtname"></td></tr>
<tr><td>Archivo:</td><td><input type="file" name="myfile"></td></tr>
<tr><td> </td><td><input type="submit" value="Upload"></td></tr>
</table>
<div class="progress">
<div class="bar"></div >
<div class="percent">0%</div >
<div id="status"></div>
</div>
</form>
<script src="../js/jquery-1.11.1.min.js"></script>
<script src="../js/jquery.form.js"></script>
<script>
(function() {
var bar = $('.bar');
var percent = $('.percent');
var status = $('#status');
$('form').ajaxForm({
beforeSend: function() {
status.empty();
var percentVal = '0%';
bar.width(percentVal)
percent.html(percentVal);
},
uploadProgress: function(event, position, total, percentComplete) {
var percentVal = percentComplete + '%';
bar.width(percentVal)
percent.html(percentVal);
},
success: function() {
var percentVal = '100%';
bar.width(percentVal)
percent.html(percentVal);
},
complete: function(xhr) {
status.html(xhr.responseText);
}
});
})();
</script>
Este es mi PHP que sube el archivo, en este caso solo se permiten las extensiones .pdf, .doc y .docx, lo que pasa es q al subir el archivo se va por el if del error y me imprime Error 1 de respuesta al ajax y no me carga el archivo y la verdad no se que pueda ser ya que no estoy limitando el peso del archivo solo la extension y eso funciona bien.
Código PHP:
<?php
if( !isset($_FILES['myfile']) ){
echo 'Ha habido un error, tienes que elegir un archivo<br/>';
}else{
$nombre = $_FILES['myfile']['name'];
$nombre_tmp = $_FILES['myfile']['tmp_name'];
$tipo = $_FILES['myfile']['type'];
$tamano = $_FILES['myfile']['size'];
$ext_permitidas = array('pdf','doc','docx');
$partes_nombre = explode('.', $nombre);
$extension = end( $partes_nombre );
$ext_correcta = in_array($extension, $ext_permitidas);
$tipo_correcto = preg_match('%\.(pdf|doc|docx)$%i', $nombre);
//$limite = 500 * 1024;
if( $ext_correcta && $tipo_correcto){
if( $_FILES['myfile']['error'] > 0 ){
echo 'Error: ' . $_FILES['myfile']['error'] . '<br/>';
}else{
if( file_exists( '../catalogs/'.$nombre) ){
echo '<br/>El archivo ya existe: ' . $nombre;
}else{
move_uploaded_file($nombre_tmp,"../catalogs/".uniqid().$nombre);
echo "<br/>Guardado en: " . "../catalogs/".$nombre;
}
}
}else{
echo 'Archivo inválido';
}
}
?>
Alguna ayuda por favor ?