Ver Mensaje Individual
  #8 (permalink)  
Antiguo 12/08/2011, 07:06
nuevoconphp
 
Fecha de Ingreso: febrero-2011
Mensajes: 64
Antigüedad: 15 años, 6 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($temp, 0, SEEK_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(10, 99);
            }
        }
        
        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