Foros del Web » Programando para Internet » PHP »

Subir archivos antes del envio

Estas en el tema de Subir archivos antes del envio en el foro de PHP en Foros del Web. Por favor, necesito ayuda en lo siguiente: Tengo un formulario de envío de email en mi web, con la función para enviar archivos adjuntos. Lo ...
  #1 (permalink)  
Antiguo 05/07/2012, 15:44
 
Fecha de Ingreso: mayo-2010
Mensajes: 6
Antigüedad: 13 años, 10 meses
Puntos: 0
Subir archivos antes del envio

Por favor, necesito ayuda en lo siguiente:

Tengo un formulario de envío de email en mi web, con la función para enviar archivos adjuntos. Lo que quiero es poder subir los archivos antes del envío con una barra de progreso. Para ello estoy usando el plugin jQuery File Upload, el cual me funciona perfectamente.
Lo que no puedo hacer es que el email adjunte los archivos subidos con el plugin.

Gracias de antemano.
  #2 (permalink)  
Antiguo 05/07/2012, 23:41
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Subir archivos antes del envio

Y el código que no te funciona... dónde está?
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 16/07/2012, 17:18
 
Fecha de Ingreso: mayo-2010
Mensajes: 6
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Subir archivos antes del envio

Ok, primero hay un formulario con su correspondiente envío de adjuntos, el cual funciona perfecto. Luego he agregado el jQuery File Upload para subir archivos al servidor, el cual también funciona. Lo que no sé es como pasarle variables al formulario PHP para que envíe los adjuntos subidos con el jQuery File Upload.

Acá va todo el código en dos partes:

<?php

$direccion_envio= '[email protected]';
//la direccion a la que se enviara el email.

$url= 'http://www.xxxx.php';
//la URL donde esta publicado el formulario. SIN la barra al final

$cantidad_archivos= 5;
//la cantidad máxima de archivos que se permitirá enviar.

//FIN CONFIGURACION

?>

<?PHP
//proceso del formulario
// si existe "enviar"...

$mensaje='<div id="tex1">Solicite su cotización<br />
</div>';

if (isset ($_POST['enviar'])) {

// vamos a hacer uso de la clase phpmailer,
require("inc/class.phpmailer.php");

$mail = new PHPMailer();

//recogemos las variables y configuramos PHPMailer

$mail->FromName = $_POST['nombre'];

$comentario=$_POST['comentario'];

//comprobamos si se adjuntaron archivos, los cargamos en el servidor y los pasamos como adjuntos del email
if (isset($_FILES['files']['tmp_name'])) {
$achivos_adjuntos='';
$i=0;
do {
if($_FILES['files']['tmp_name'][$i] =="")
{
$aleatorio = rand();
$nuevonombre = $aleatorio.'-'.$_FILES['files']['name'][$i];

$achivos_adjuntos .= '<br /><a href="'.$url.'server/php/files/'.$nuevonombre.'">'.$nuevonombre.'</a></strong>';
$mail->AddAttachment($_FILES['files']['files/'][$i], $nuevonombre);
}
$i++;
} while ($i < 1);

}

//comprobamos si todos los campos fueron completados
if ($_POST['nombre']!='' && $_POST['comentario']!='' && $error_archivo=='') {


$nombre=$_POST['nombre'];
$comentario=$_POST['comentario'];

//armamos el html
$contenido = '<html><body>';
$contenido .= '<p>Nombre: <strong>'.$nombre.'</strong></p>';
$contenido .= '<p>Mensaje: <strong>'.$comentario.'</strong></p>';
$contenido .= '<hr />';
$contenido .= '<p>Archivos Adjuntos: '.$achivos_adjuntos.'</p>';
$contenido .= '<hr />';
$contenido .= '</body></html>';
$mail->Body = $contenido;
// si todos los campos fueron completados enviamos el mail

$email = strip_tags(stripslashes($_POST['email']));
//this is repeated for several other fields, then:
$nombre = strip_tags(stripslashes($_POST['nombre']));

if(isInjected($email)) { die(); }
if(isInjected($nombre)) { die(); }

$mail->Send();

$flag='ok';
$mensaje='<div id="tex">Su mensaje se envió con éxito.</div>';

} else {

//si no todos los campos fueron completados se frena el envio y avisamos al usuario
$flag='err';
$mensaje='<div id="error">- xxxx '.$error_archivo.'</div>';

}
}

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es-es" lang="es-es"><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Solicitar</title>
<meta name="Keywords" content="zz" />
<meta name="Description" content="zzz" />

<!-- Bootstrap CSS Toolkit styles -->
<link rel="stylesheet" href="http://blueimp.github.com/cdn/css/bootstrap.min.css">
<!-- Generic page styles -->
<link rel="stylesheet" href="css/style.css">
<!-- Bootstrap styles for responsive website layout, supporting different screen sizes -->
<link rel="stylesheet" href="http://blueimp.github.com/cdn/css/bootstrap-responsive.min.css">
<!-- Bootstrap CSS fixes for IE6 -->
<!--[if lt IE 7]><link rel="stylesheet" href="http://blueimp.github.com/cdn/css/bootstrap-ie6.min.css"><![endif]-->
<!-- Bootstrap Image Gallery styles -->
<link rel="stylesheet" href="http://blueimp.github.com/Bootstrap-Image-Gallery/css/bootstrap-image-gallery.min.css">
<!-- CSS to style the file input field as button and adjust the Bootstrap progress bars -->
<link rel="stylesheet" href="css/jquery.fileupload-ui.css">
<!-- Shim to make HTML5 elements usable in older Internet Explorer versions -->
<!--[if lt IE 9]><script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script><![endif]-->




<script type="text/javascript" src="js2/jquery-1.4.2.min.js"></script>
<script src="js2/jquery.form.js" type="text/javascript" language="javascript"></script>
<script src="js2/jquery.MultiFile.pack.js" type="text/javascript" language="javascript"></script>
<script type="text/javascript">
OCULTO="none";
VISIBLE="block";
function mostrar1(blo) {
document.getElementById(blo).style.display=VISIBLE ;
document.getElementById('ver_off1').style.display= VISIBLE;
document.getElementById('ver_on1').style.display=O CULTO;
}
function ocultar1(blo) {
document.getElementById(blo).style.display=OCULTO;
document.getElementById('ver_off1').style.display= OCULTO;
document.getElementById('ver_on1').style.display=V ISIBLE;
}
</script>

<style type="text/css">
<!--

-->
</style>


</head>
  #4 (permalink)  
Antiguo 16/07/2012, 17:18
 
Fecha de Ingreso: mayo-2010
Mensajes: 6
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Subir archivos antes del envio

Ahora el Body:

<body>



<div id="templatemo_content" >

<!-- end of column2 -->
<div id="cont8">

<div id="cont9">
<div id="form">

<?php echo $mensaje; /*mostramos el estado de envio del form */ ?>

<?php if($cantidad_archivos > 1) {$plural='s';} else {$plural='';} ?>

<?php if ($flag!='ok') { ?>
<form action="<?php echo $PHP_SELF;?>" method="post" enctype="multipart/form-data">
<p><strong>Nombre*</strong><br />
<input size="40" <?php if (isset ($flag) && $_POST['nombre']=='') { echo 'class="error"';} else {echo 'class="campo"';} ?> type="text" name="nombre" value="<?php echo $_POST['nombre'];?>" /></p>

<p>&nbsp;</p>

<p><strong>Adjuntar Archivos</strong><br />
<br /><br />
<input type="file" class="multi max-<?=$cantidad_archivos?>" name="files[]" value="<?=$_FILES['files']?>" />
<br /></p>

<p><strong>Mensaje*</strong><br />
<textarea cols="40" rows="10" <?php if (isset ($flag) && $_POST['comentario']=='') { echo 'class="com-error"';} else {echo 'class="com"';} ?> name="comentario"><?php echo $_POST['comentario'];?></textarea></p>
<p><input class="boton" type="submit" name="enviar" value="enviar" onclick="javascript:bar1.showBar();javascript:docu ment.getElementById('espere2').innerHTML =
'...espere por favor, envío en proceso.'"/></p>
</form>

<?php } ?>

<form id="fileupload" action="server/php/" method="POST" enctype="multipart/form-data">
<!-- The fileupload-buttonbar contains buttons to add/delete files and start/cancel the upload -->
<div class="row fileupload-buttonbar">
<div class="span7">
<!-- The fileinput-button span is used to style the file input field as button -->
<span class="btn btn-success fileinput-button">
<i class="icon-plus icon-white"></i>
<span>Add files...</span>
<input type="file" name="files[]" multiple>
</span>
<button type="submit" class="btn btn-primary start">
<i class="icon-upload icon-white"></i>
<span>Start upload</span>
</button>
<button type="reset" class="btn btn-warning cancel">
<i class="icon-ban-circle icon-white"></i>
<span>Cancel upload</span>
</button>
<button type="button" class="btn btn-danger delete">
<i class="icon-trash icon-white"></i>
<span>Delete</span>
</button>
<input type="checkbox" class="toggle">
</div>
<!-- The global progress information -->
<div class="span5 fileupload-progress fade">
<!-- The global progress bar -->
<div class="progress progress-success progress-striped active" role="progressbar" aria-valuemin="0" aria-valuemax="100">
<div class="bar" style="width:0%;"></div>
</div>
<!-- The extended global progress information -->
<div class="progress-extended">&nbsp;</div>
</div>
</div>
<!-- The loading indicator is shown during file processing -->
<div class="fileupload-loading"></div>
<br>
<!-- The table listing the files available for upload/download -->
<table role="presentation" class="table table-striped"><tbody class="files" data-toggle="modal-gallery" data-target="#modal-gallery"></tbody></table>
</form>
<br>

</div>
<!-- modal-gallery is the modal dialog used for the image gallery -->
<div id="modal-gallery" class="modal modal-gallery hide fade" data-filter=":odd">
<div class="modal-header">
<a class="close" data-dismiss="modal">&times;</a>
<h3 class="modal-title"></h3>
</div>
<div class="modal-body"><div class="modal-image"></div></div>
<div class="modal-footer">
<a class="btn modal-download" target="_blank">
<i class="icon-download"></i>
<span>Download</span>
</a>
<a class="btn btn-success modal-play modal-slideshow" data-slideshow="5000">
<i class="icon-play icon-white"></i>
<span>Slideshow</span>
</a>
<a class="btn btn-info modal-prev">
<i class="icon-arrow-left icon-white"></i>
<span>Previous</span>
</a>
<a class="btn btn-primary modal-next">
<span>Next</span>
<i class="icon-arrow-right icon-white"></i>
</a>
</div>
</div>
<!-- The template to display files available for upload -->
<script id="template-upload" type="text/x-tmpl">
{% for (var i=0, file; file=o.files[i]; i++) { %}
<tr class="template-upload fade">
<td class="preview"><span class="fade"></span></td>
<td class="name"><span>{%=file.name%}</span></td>
<td class="size"><span>{%=o.formatFileSize(file.size)% }</span></td>
{% if (file.error) { %}
<td class="error" colspan="2"><span class="label label-important">{%=locale.fileupload.error%}</span> {%=locale.fileupload.errors[file.error] || file.error%}</td>
{% } else if (o.files.valid && !i) { %}
<td>
<div class="progress progress-success progress-striped active" role="progressbar" aria-valuemin="0" aria-valuemax="100" aria-valuenow="0"><div class="bar" style="width:0%;"></div></div>
</td>
<td class="start">{% if (!o.options.autoUpload) { %}
<button class="btn btn-primary">
<i class="icon-upload icon-white"></i>
<span>{%=locale.fileupload.start%}</span>
</button>
{% } %}</td>
{% } else { %}
<td colspan="2"></td>
{% } %}
<td class="cancel">{% if (!i) { %}
<button class="btn btn-warning">
<i class="icon-ban-circle icon-white"></i>
<span>{%=locale.fileupload.cancel%}</span>
</button>
{% } %}</td>
</tr>
{% } %}
</script>
<!-- The template to display files available for download -->
<script id="template-download" type="text/x-tmpl">
{% for (var i=0, file; file=o.files[i]; i++) { %}
<tr class="template-download fade">
{% if (file.error) { %}
<td></td>
<td class="name"><span>{%=file.name%}</span></td>
<td class="size"><span>{%=o.formatFileSize(file.size)% }</span></td>
<td class="error" colspan="2"><span class="label label-important">{%=locale.fileupload.error%}</span> {%=locale.fileupload.errors[file.error] || file.error%}</td>
{% } else { %}
<td class="preview">{% if (file.thumbnail_url) { %}
<a href="{%=file.url%}" title="{%=file.name%}" rel="gallery" download="{%=file.name%}"><img src="{%=file.thumbnail_url%}"></a>
{% } %}</td>
<td class="name">
<a href="{%=file.url%}" title="{%=file.name%}" rel="{%=file.thumbnail_url&&'gallery'%}" download="{%=file.name%}">{%=file.name%}</a>
</td>
<td class="size"><span>{%=o.formatFileSize(file.size)% }</span></td>
<td colspan="2"></td>
{% } %}
<td class="delete">
<button class="btn btn-danger" data-type="{%=file.delete_type%}" data-url="{%=file.delete_url%}">
<i class="icon-trash icon-white"></i>
<span>{%=locale.fileupload.destroy%}</span>
</button>
<input type="checkbox" name="delete" value="1">
</td>
</tr>
{% } %}
</script>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<!-- The jQuery UI widget factory, can be omitted if jQuery UI is already included -->
<script src="js/vendor/jquery.ui.widget.js"></script>
<!-- The Templates plugin is included to render the upload/download listings -->
<script src="http://blueimp.github.com/JavaScript-Templates/tmpl.min.js"></script>
<!-- The Load Image plugin is included for the preview images and image resizing functionality -->
<script src="http://blueimp.github.com/JavaScript-Load-Image/load-image.min.js"></script>
<!-- The Canvas to Blob plugin is included for image resizing functionality -->
<script src="http://blueimp.github.com/JavaScript-Canvas-to-Blob/canvas-to-blob.min.js"></script>
<!-- Bootstrap JS and Bootstrap Image Gallery are not required, but included for the demo -->
<script src="http://blueimp.github.com/cdn/js/bootstrap.min.js"></script>
<script src="http://blueimp.github.com/Bootstrap-Image-Gallery/js/bootstrap-image-gallery.min.js"></script>
<!-- The Iframe Transport is required for browsers without support for XHR file uploads -->
<script src="js/jquery.iframe-transport.js"></script>
<!-- The basic File Upload plugin -->
<script src="js/jquery.fileupload.js"></script>
<!-- The File Upload file processing plugin -->
<script src="js/jquery.fileupload-fp.js"></script>
<!-- The File Upload user interface plugin -->
<script src="js/jquery.fileupload-ui.js"></script>
<!-- The localization script -->
<script src="js/locale.js"></script>
<!-- The main application script -->
<script src="js/main.js"></script>


</div>

</div>
</body>
</html>

Etiquetas: formulario
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:55.