extjs/examples/ux/fileuploadfield/FileUploadField.js
extjs/examples/ux/fileuploadfield/css/fileuploadfield.css
donde extjs es la versión que hallan descargado, bueno los incluimos en nuestro html
y aquí un ejemplo del js:
var subir_archivos_formpanel = new Ext.FormPanel({
title: 'Subir archivos',
width: 400,
height: 300,
frame: true,
fileUpload: true,
style: {"margin-left": "10px"},
bodyStyle: 'padding:5px',
defaults: { xtype: 'textfield', anchor:'100%'},
items:
[
{
xtype: 'fileuploadfield',
id: 'archivo',
emptyText: 'Seleccione un documento',
fieldLabel: 'Escojer',
name: 'archivo',
buttonText: '',
allowBlank:false,
buttonCfg: {iconCls: 'archivo'} /// imagen del boton de seeccionar el archivo
}
],
buttons:
[
{
text:'Enviar',
handler: subir_archivo
}
]
});
function subir_archivo(){
subir_archivos_formpanel.getForm().submit({
method: 'POST',
timeout: 60000, // porsi es muy grande el archivo y se demora mucho en subir
url: url_del_php_o_la_accion_del_symfony,
params: {}, // parametros extra
waitTitle: 'Enviando',
waitMsg: 'Enviando datos...',
success: function(response, action){
obj = Ext.util.JSON.decode(action.response.responseText);
// aqui lo que quiera hacer despues de enviado el archivo con exito
},
failure: function(form, action, response){
if (action.failureType == 'server') {
obj = Ext.util.JSON.decode(action.response.responseText);
// mensaje de error
// lo que quiera hacer cuando falle
}
}
});
}
y en el php:
public function executeSubirArchivo()
{
$salida ='';
try
{
$nombre = $_FILES['archivo']['name'];
$tamano = $_FILES['archivo']['size'];
$tipo = $_FILES['archivo']['type'];
$temporal = $_FILES['archivo']['tmp_name'];
if(file_exists($nombre_carpeta_donde_se_guardan_los_archivos."/".$nombre))
{
$salida = "({success: false, errors: { reason: 'Ya existe el archivo con el mismo nombre en la base de datos'}})";
}
else
{
if($tamano > 2100000) // 1000000 aprox 1mega
{
$salida = "({success: false, errors: { reason: 'El archivo excede el limite de tamano'}})";
}
else
{
$copio = copy($temporal, "uploads/".$nombre_carpeta_donde_se_guardan_los_archivos."/".$nombre);
if($copio){
// guardo la info en db como para mostrar en una grid nombre tamaño y esas cosas
$salida = "({success: true, mensaje:'El archivo subio exitosamente'})";
return $this->renderText($salida);
}
}
}
}
catch (Exception $excepcion)
{
$salida = "({success: false, errors: { reason: 'Hubo un error'}})";
}
return $this->renderText($salida);
}
no esta muy explicado pero creo que el código es muy legible, no probé el código que aquí esta publicado, lo tome de otro que implemento maryitsv
espero les sirva y si hay algún error no duden en hacerlo saber.
No hay comentarios:
Publicar un comentario