Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Upload a servidor FTP de varios archivos con AJAX

Estas en el tema de Upload a servidor FTP de varios archivos con AJAX en el foro de Frameworks JS en Foros del Web. Hola a todos! Encontré estos 2 ejemplos bastante simples dentro de lo que estoy necesitando porque estoy armando un panel de control que va a ...
  #1 (permalink)  
Antiguo 03/07/2008, 11:24
 
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 630
Antigüedad: 21 años, 11 meses
Puntos: 1
Pregunta Upload a servidor FTP de varios archivos con AJAX

Hola a todos! Encontré estos 2 ejemplos bastante simples dentro de lo que estoy necesitando porque estoy armando un panel de control que va a estar online para el administrador y esto quisiera implementarlo para que suba unas pequeñas imágenes, pero me falta el paso más importante de todos... ¿cómo hago para que al enviar estos archivos, puedan subir a mi servidor?

Les muestro los ejemplos:

http://the-stickman.com/web-developm...-file-element/
http://www.seemysites.net/projFolder/uploader/

El primero lo hice de esta forma:

Todo va dentro del upload.php
Código PHP:
<?
      $rpta 
"";
      if (
$_POST["action"] == "upload") {
          
$tmpfile $_FILES['file_1']['tmp_name'];
          
$tmpname $_FILES['file_1']['name'];
          
$ftpuser "miusuario";
          
$ftppass "mipassword";
          
$ftppath "ftp.miservidor.com.ar/public_html/fotos/";
          
$ftpurl "ftp://".$ftpuser.":".$ftppass."@".$ftppath;

          if (
$tmpname != "") {
              
$fp fopen($tmpfile'r');
              
$ch curl_init();
              
curl_setopt($chCURLOPT_URL$ftpurl.$tmpname);
              
curl_setopt($chCURLOPT_UPLOAD2);
              
curl_setopt($chCURLOPT_INFILE$fp);
              
curl_setopt($chCURLOPT_INFILESIZEfilesize($tmpfile));
              
curl_exec($ch);
              
$error curl_errno($ch);
              
curl_close ($ch);
              if (
$error == 0) {
                  
$rpta 'Archivo subido correctamente.';
              } else {
                  
$rpta 'Error al subir el archivo.';
              }
          } else {
              
$rpta 'Seleccionar un archivo.';
          }
      }

?>
Código HTML:
<head>
	<!-- Include the javascript -->
	<script src="multifile_compressed.js"></script>
</head>

<body>

<!-- This is the form -->
<form enctype="multipart/form-data" action="upload.php" method = "post">
	<!-- The file element -- NOTE: it has an ID -->
	<input id="my_file_element" type="file" name="file_1" >
	<input type="submit">
	<input type="hidden" name="action" value="upload" />
</form>

Files:
<!-- This is where the output will appear -->
<div id="files_list"></div>
<script>
	<!-- Create an instance of the multiSelector class, pass it the output target and the max number of files -->
	var multi_selector = new MultiSelector( document.getElementById( 'files_list' ), 3 );
	<!-- Pass in the file element -->
	multi_selector.addElement( document.getElementById( 'my_file_element' ) );
</script>
</body> 
multifile.js

Código HTML:
function MultiSelector( list_target, max ){

	// Where to write the list
	this.list_target = list_target;
	// How many elements?
	this.count = 0;
	// How many elements?
	this.id = 0;
	// Is there a maximum?
	if( max ){
		this.max = max;
	} else {
		this.max = -1;
	};
	
	/**
	 * Add a new file input element
	 */
	this.addElement = function( element ){

		// Make sure it's a file input element
		if( element.tagName == 'INPUT' && element.type == 'file' ){

			// Element name -- what number am I?
			element.name = 'file_' + this.id++;

			// Add reference to this object
			element.multi_selector = this;

			// What to do when a file is selected
			element.onchange = function(){

				// New file input
				var new_element = document.createElement( 'input' );
				new_element.type = 'file';

				// Add new element
				this.parentNode.insertBefore( new_element, this );

				// Apply 'update' to element
				this.multi_selector.addElement( new_element );

				// Update list
				this.multi_selector.addListRow( this );

				// Hide this: we can't use display:none because Safari doesn't like it
				this.style.position = 'absolute';
				this.style.left = '-1000px';

			};
			// If we've reached maximum number, disable input element
			if( this.max != -1 && this.count >= this.max ){
				element.disabled = true;
			};

			// File element counter
			this.count++;
			// Most recent element
			this.current_element = element;
			
		} else {
			// This can only be applied to file input elements!
			alert( 'Error: not a file input element' );
		};

	};

	/**
	 * Add a new row to the list of files
	 */
	this.addListRow = function( element ){

		// Row div
		var new_row = document.createElement( 'div' );

		// Delete button
		var new_row_button = document.createElement( 'input' );
		new_row_button.type = 'button';
		new_row_button.value = 'Delete';

		// References
		new_row.element = element;

		// Delete function
		new_row_button.onclick= function(){

			// Remove element from form
			this.parentNode.element.parentNode.removeChild( this.parentNode.element );

			// Remove this row from the list
			this.parentNode.parentNode.removeChild( this.parentNode );

			// Decrement counter
			this.parentNode.element.multi_selector.count--;

			// Re-enable input element (if it's disabled)
			this.parentNode.element.multi_selector.current_element.disabled = false;

			// Appease Safari
			//    without it Safari wants to reload the browser window
			//    which nixes your already queued uploads
			return false;
		};

		// Set row value
		new_row.innerHTML = element.value;

		// Add button
		new_row.appendChild( new_row_button );

		// Add it to the list
		this.list_target.appendChild( new_row );
		
	};

};
Pero no sé por qué, si subo un solo archivo, NO lo sube al servidor... si subo 2 archivos, me sube solo el segundo y si subo los 3 archivos tambien me sube solo el segundo.

¿Dónde puede estar el error?
¿Se pueden subir varios archivos a la vez a un servidor?

Muchas gracias de entemano.

Saludos. Marx.
__________________
"Todo lo que somos es el resultado de lo que hemos pensado". Budda.
  #2 (permalink)  
Antiguo 11/07/2008, 14:44
Avatar de lalogrosz  
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 339
Antigüedad: 21 años, 11 meses
Puntos: 6
Respuesta: Upload a servidor FTP de varios archivos con AJAX

Hola, no pude leer todo tu codigo porque es demasiado extenso, pero solo con tu pregunta te puedo decir una cosa.

No se puede subir un archivo por AJAX, ya que lo que envies será por POST o por GET, y en tu archivo que llames no va a tener nada por $_FILES.
Hay unos emuladores de envio de files por AJAX que es utilizando iframes.

Aca tenes un ejemplo de como utilizarlo.

http://www.webtoolkit.info/ajax-file-upload.html

Saludos.
__________________
"Vivir....solo cuesta Vida"
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 20:27.