Foros del Web » Programando para Internet » PHP »

PHP Upload y Mysql

Estas en el tema de PHP Upload y Mysql en el foro de PHP en Foros del Web. hola a todos, Estoy tratando de implementar un plugin de jquery en una web que estoy creando. Este plugin es para subir archivos al servidor ...
  #1 (permalink)  
Antiguo 11/08/2011, 19:39
 
Fecha de Ingreso: febrero-2011
Mensajes: 64
Antigüedad: 13 años, 2 meses
Puntos: 3
Pregunta PHP Upload y Mysql

hola a todos,

Estoy tratando de implementar un plugin de jquery en una web que estoy creando. Este plugin es para subir archivos al servidor llamando a un archivo php que se encarga de esto. Mi pregunta: Como puedo cojer la variable de la ruta del archivo que estoy subiendo y meterla a una tabla de mi base de datos mysql. He hecho varias pruebas pero cada ves que agrego algun codigo al archivo mi subida de archivo falla. Si alguno me ayuda se lo agradesco.

aqui esta el archivo php:

Código PHP:
<?php

/**
 * Handle file uploads via XMLHttpRequest
 */
class qqUploadedFileXhr {
    
/**
     * Save the file to the specified path
     * @return boolean TRUE on success
     */
    
function save($path) {    
        
$input fopen("php://input""r");
        
$temp tmpfile();
        
$realSize stream_copy_to_stream($input$temp);
        
fclose($input);
        
        if (
$realSize != $this->getSize()){            
            return 
false;
        }
        
        
$target fopen($path"w");        
        
fseek($temp0SEEK_SET);
        
stream_copy_to_stream($temp$target);
        
fclose($target);
        
        return 
true;
    }
    function 
getName() {
        return 
$_GET['qqfile'];
    }
    function 
getSize() {
        if (isset(
$_SERVER["CONTENT_LENGTH"])){
            return (int)
$_SERVER["CONTENT_LENGTH"];            
        } else {
            throw new 
Exception('Getting content length is not supported.');
        }      
    }   
}

/**
 * Handle file uploads via regular form post (uses the $_FILES array)
 */
class qqUploadedFileForm {  
    
/**
     * Save the file to the specified path
     * @return boolean TRUE on success
     */
    
function save($path) {
        if(!
move_uploaded_file($_FILES['qqfile']['tmp_name'], $path)){
            return 
false;
        }
        return 
true;
    }
    function 
getName() {
        return 
$_FILES['qqfile']['name'];
    }
    function 
getSize() {
        return 
$_FILES['qqfile']['size'];
    }
}

class 
qqFileUploader {
    private 
$allowedExtensions = array();
    private 
$sizeLimit 10485760;
    private 
$file;

    function 
__construct(array $allowedExtensions = array(), $sizeLimit 10485760){        
        
$allowedExtensions array_map("strtolower"$allowedExtensions);
            
        
$this->allowedExtensions $allowedExtensions;        
        
$this->sizeLimit $sizeLimit;
        
        
$this->checkServerSettings();       

        if (isset(
$_GET['qqfile'])) {
            
$this->file = new qqUploadedFileXhr();
        } elseif (isset(
$_FILES['qqfile'])) {
            
$this->file = new qqUploadedFileForm();
        } else {
            
$this->file false
        }
    }
    
    private function 
checkServerSettings(){        
        
$postSize $this->toBytes(ini_get('post_max_size'));
        
$uploadSize $this->toBytes(ini_get('upload_max_filesize'));        
        
        if (
$postSize $this->sizeLimit || $uploadSize $this->sizeLimit){
            
$size max(1$this->sizeLimit 1024 1024) . 'M';             
            die(
"{'error':'increase post_max_size and upload_max_filesize to $size'}");    
        }        
    }
    
    private function 
toBytes($str){
        
$val trim($str);
        
$last strtolower($str[strlen($str)-1]);
        switch(
$last) {
            case 
'g'$val *= 1024;
            case 
'm'$val *= 1024;
            case 
'k'$val *= 1024;        
        }
        return 
$val;
    }
    
    
/**
     * Returns array('success'=>true) or array('error'=>'error message')
     */
    
function handleUpload($uploadDirectory$replaceOldFile FALSE){
        if (!
is_writable($uploadDirectory)){
            return array(
'error' => "Server error. Upload directory isn't writable.");
        }
        
        if (!
$this->file){
            return array(
'error' => 'No files were uploaded.');
        }
        
        
$size $this->file->getSize();
        
        if (
$size == 0) {
            return array(
'error' => 'File is empty');
        }
        
        if (
$size $this->sizeLimit) {
            return array(
'error' => 'File is too large');
        }
        
        
$pathinfo pathinfo($this->file->getName());
        
$filename $pathinfo['filename'];
        
//$filename = md5(uniqid());
        
$ext $pathinfo['extension'];

        if(
$this->allowedExtensions && !in_array(strtolower($ext), $this->allowedExtensions)){
            
$these implode(', '$this->allowedExtensions);
            return array(
'error' => 'File has an invalid extension, it should be one of '$these '.');
        }
        
        if(!
$replaceOldFile){
            
/// don't overwrite previous files that were uploaded
            
while (file_exists($uploadDirectory $filename '.' $ext)) {
                
$filename .= rand(1099);
            }
        }
        
        if (
$this->file->save($uploadDirectory $filename '.' $ext)){
            return array(
'success'=>true);
        } else {
            return array(
'error'=> 'Could not save uploaded file.' .
                
'The upload was cancelled, or server error encountered');
        }
        
    }     
}



// list of valid extensions, ex. array("jpeg", "xml", "bmp")
$allowedExtensions = array();
// max file size in bytes
$sizeLimit 10 1024 1024;

$uploader = new qqFileUploader($allowedExtensions$sizeLimit);
$result $uploader->handleUpload('uploads/');
// to pass data through iframe you will need to encode all html tags
echo htmlspecialchars(json_encode($result), ENT_NOQUOTES);

gracias de antemano
  #2 (permalink)  
Antiguo 11/08/2011, 19:47
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: PHP Upload y Mysql

Hola:

¿para qué quieres conocer el sistema de archivos de tus visitantes...? ¡Seguro que no te importa nada... ni podrías darle utilidad...! A no ser que tengas malas ideas (espero que no...)

Ese dato por razones de seguridad no se puede obtener.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 11/08/2011, 20:00
 
Fecha de Ingreso: febrero-2011
Mensajes: 64
Antigüedad: 13 años, 2 meses
Puntos: 3
Respuesta: PHP Upload y Mysql

Creo q no entendieron bien mi pregunta, esto es un plugin jquery, yo no hice el script, solo estoy tratando de implementarlo a mis necesidades, lo unico que quiero es coger el nombre del archivo que estoy subiendo y meter la direccion en una base de datos. :) No se si me hago explicar.

gracias
  #4 (permalink)  
Antiguo 11/08/2011, 20:35
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: PHP Upload y Mysql

no entiendo tu pregunta esto
Código PHP:
Ver original
  1. $result = $uploader->handleUpload('uploads/');
ahi tu le indicas la ruta al archivo o a la imagen en tu servidor la ruta hacia esa carpeta es la que deberias guardar
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #5 (permalink)  
Antiguo 11/08/2011, 20:55
 
Fecha de Ingreso: febrero-2011
Mensajes: 64
Antigüedad: 13 años, 2 meses
Puntos: 3
Respuesta: PHP Upload y Mysql

Cita:
Iniciado por carlos_belisario Ver Mensaje
no entiendo tu pregunta esto
Código PHP:
Ver original
  1. $result = $uploader->handleUpload('uploads/');
ahi tu le indicas la ruta al archivo o a la imagen en tu servidor la ruta hacia esa carpeta es la que deberias guardar
Gracias, eso me imaginaba, lo que no entiendo donde hacer ni consulta para metr la variable a mi base de datos??

gracias de nuevo
  #6 (permalink)  
Antiguo 11/08/2011, 21:11
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: PHP Upload y Mysql

bueno si ves un poco el codigo de la clase en el metodo handleUpload guarda el archivo, fijate en este condicional
Código PHP:
Ver original
  1. if ($this->file->save($uploadDirectory . $filename . '.' . $ext)){
  2.             return array('success'=>true);
  3.         }
entonces lo que debes hacer es un condicional algo asi
Código PHP:
Ver original
  1. if($result['success']){
  2.   /*aca tu codigo si subio*/
  3. }
sino muestras los errores que te debe de enviar la clase, prueba y nos comentas
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #7 (permalink)  
Antiguo 11/08/2011, 21:24
 
Fecha de Ingreso: febrero-2011
Mensajes: 64
Antigüedad: 13 años, 2 meses
Puntos: 3
Respuesta: PHP Upload y Mysql

Cita:
Iniciado por carlos_belisario Ver Mensaje
bueno si ves un poco el codigo de la clase en el metodo handleUpload guarda el archivo, fijate en este condicional
Código PHP:
Ver original
  1. if ($this->file->save($uploadDirectory . $filename . '.' . $ext)){
  2.             return array('success'=>true);
  3.         }
entonces lo que debes hacer es un condicional algo asi
Código PHP:
Ver original
  1. if($result['success']){
  2.   /*aca tu codigo si subio*/
  3. }
sino muestras los errores que te debe de enviar la clase, prueba y nos comentas
Creo q por ahi va la cosa, voy a terminar mi codigo y te cuento.

un millon de gracias :)
  #8 (permalink)  
Antiguo 12/08/2011, 07:06
 
Fecha de Ingreso: febrero-2011
Mensajes: 64
Antigüedad: 13 años, 2 meses
Puntos: 3
Respuesta: PHP Upload y Mysql

Edite la ultima parte de mi script con la ayuda que me han dado. Debiera grabarse en mi tabla el texto 'mimi' pero algun error estoy cometiento alguien me puede ayudar??

Aqui el codigo

Código PHP:
<?php
/**
 * Handle file uploads via XMLHttpRequest
 */
class qqUploadedFileXhr {
    
/**
     * Save the file to the specified path
     * @return boolean TRUE on success
     */
    
function save($path) {    
        
$input fopen("php://input""r");
        
$temp tmpfile();
        
$realSize stream_copy_to_stream($input$temp);
        
fclose($input);
        
        if (
$realSize != $this->getSize()){            
            return 
false;
        }
        
        
$target fopen($path"w");        
        
fseek($temp0SEEK_SET);
        
stream_copy_to_stream($temp$target);
        
fclose($target);
        
        return 
true;
    }
    function 
getName() {
        return 
$_GET['qqfile'];
    }
    function 
getSize() {
        if (isset(
$_SERVER["CONTENT_LENGTH"])){
            return (int)
$_SERVER["CONTENT_LENGTH"];            
        } else {
            throw new 
Exception('Getting content length is not supported.');
        }      
    }   
}

/**
 * Handle file uploads via regular form post (uses the $_FILES array)
 */
class qqUploadedFileForm {  
    
/**
     * Save the file to the specified path
     * @return boolean TRUE on success
     */
    
function save($path) {
        if(!
move_uploaded_file($_FILES['qqfile']['tmp_name'], $path)){
            return 
false;
        }
        return 
true;
    }
    function 
getName() {
        return 
$_FILES['qqfile']['name'];
    }
    function 
getSize() {
        return 
$_FILES['qqfile']['size'];
    }
}

class 
qqFileUploader {
    private 
$allowedExtensions = array();
    private 
$sizeLimit 10485760;
    private 
$file;

    function 
__construct(array $allowedExtensions = array(), $sizeLimit 10485760){        
        
$allowedExtensions array_map("strtolower"$allowedExtensions);
            
        
$this->allowedExtensions $allowedExtensions;        
        
$this->sizeLimit $sizeLimit;
        
        
$this->checkServerSettings();       

        if (isset(
$_GET['qqfile'])) {
            
$this->file = new qqUploadedFileXhr();
        } elseif (isset(
$_FILES['qqfile'])) {
            
$this->file = new qqUploadedFileForm();
        } else {
            
$this->file false
        }
    }
    
    private function 
checkServerSettings(){        
        
$postSize $this->toBytes(ini_get('post_max_size'));
        
$uploadSize $this->toBytes(ini_get('upload_max_filesize'));        
        
        if (
$postSize $this->sizeLimit || $uploadSize $this->sizeLimit){
            
$size max(1$this->sizeLimit 1024 1024) . 'M';             
            die(
"{'error':'increase post_max_size and upload_max_filesize to $size'}");    
        }        
    }
    
    private function 
toBytes($str){
        
$val trim($str);
        
$last strtolower($str[strlen($str)-1]);
        switch(
$last) {
            case 
'g'$val *= 1024;
            case 
'm'$val *= 1024;
            case 
'k'$val *= 1024;        
        }
        return 
$val;
    }
    
    
/**
     * Returns array('success'=>true) or array('error'=>'error message')
     */
    
function handleUpload($uploadDirectory$replaceOldFile FALSE){
        if (!
is_writable($uploadDirectory)){
            return array(
'error' => "Server error. Upload directory isn't writable.");
        }
        
        if (!
$this->file){
            return array(
'error' => 'No files were uploaded.');
        }
        
        
$size $this->file->getSize();
        
        if (
$size == 0) {
            return array(
'error' => 'File is empty');
        }
        
        if (
$size $this->sizeLimit) {
            return array(
'error' => 'File is too large');
        }
        
        
$pathinfo pathinfo($this->file->getName());
        
$filename $pathinfo['filename'];
        
//$filename = md5(uniqid());
        
$ext $pathinfo['extension'];

        if(
$this->allowedExtensions && !in_array(strtolower($ext), $this->allowedExtensions)){
            
$these implode(', '$this->allowedExtensions);
            return array(
'error' => 'File has an invalid extension, it should be one of '$these '.');
        }
        
        if(!
$replaceOldFile){
            
/// don't overwrite previous files that were uploaded
            
while (file_exists($uploadDirectory $filename '.' $ext)) {
                
$filename .= rand(1099);
            }
        }
        
        if (
$this->file->save($uploadDirectory $filename '.' $ext)){
            return array(
'success'=>true);
        }         
        else {
            return array(
'error'=> 'Could not save uploaded file.' .
                
'The upload was cancelled, or server error encountered');
        }
        
    }     
}



// list of valid extensions, ex. array("jpeg", "xml", "bmp")
$allowedExtensions = array();
// max file size in bytes
$sizeLimit 10 1024 1024;

$uploader = new qqFileUploader($allowedExtensions$sizeLimit);
$result $uploader->handleUpload('uploads/');


if(
$result['success']){
    
    require_once(
'../../Connections/database.php');

           
           if (!
function_exists("GetSQLValueString")) {
function 
GetSQLValueString($theValue$theType$theDefinedValue ""$theNotDefinedValue ""
{
  if (
PHP_VERSION 6) {
    
$theValue get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }

  
$theValue function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch (
$theType) {
    case 
"text":
      
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
      break;    
    case 
"long":
    case 
"int":
      
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case 
"double":
      
$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case 
"date":
      
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
      break;
    case 
"defined":
      
$theValue = ($theValue != "") ? $theDefinedValue $theNotDefinedValue;
      break;
  }
  return 
$theValue;
}
}

$editFormAction $_SERVER['PHP_SELF'];
if (isset(
$_SERVER['QUERY_STRING'])) {
  
$editFormAction .= "?" htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset(
$_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  
$insertSQL sprintf("INSERT INTO prueba (pru2) VALUES (%s)",
                       
GetSQLValueString('mimi'"text"));

  
mysql_select_db($database);
  
$Result1 mysql_query($insertSQL$ay_que_rico) or die(mysql_error());
}
           
        }
        


// to pass data through iframe you will need to encode all html tags
echo htmlspecialchars(json_encode($result), ENT_NOQUOTES);

gacias

Etiquetas: html, mysql, tabla, upload, variables
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 06:06.