Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Unire funzione PHP con funzione CGI (XUpload)

    Ciao a tutti, è possibile integrare una funzione PHP già esistente con una funzione CGI?

    La funzione PHP si occupa di gestire l'upload di file tramite apposito form ed esegue i seguenti controlli:

    -Massima dimensione del file consentita
    -Archiviare i file caricati nella cartella
    -Assegnare un id unico/nome, ai file caricati
    -Controllare l'estensione del file

    Però non esite la funzione che serve per controllare lo stato di avanzamento del caricamento del file

    Sul server dove è caricata la pagina non è possibile abilitare l'estensione APC di PHP

    Questa è la funzione nel file PHP:
    codice:
    	private function uploadConfigurableFile($fieldOptions, $file)
    	{
    		if (!is_array($fieldOptions) || !is_array($file) || empty($file['name'])) {
    			return false;
    		}
    
    		$extension = GetFileExtension($file['name']);
    		$allowedExtensions = array_map('trim', explode(',', $fieldOptions['fieldfiletype']));
    		$allowedExtensions = array_map('isc_strtolower', $allowedExtensions);
    		if ($fieldOptions['fieldfiletype'] && !in_array(isc_strtolower($extension), $allowedExtensions)) {
    			throw new ISC_QUOTE_EXCEPTION(sprintf(GetLang('InvalidFileType'), isc_html_escape($fieldOptions['fieldfiletype'])));
    		}
    
    		// Check that the maximum size is not exceeded
    		if ($fieldOptions['fieldfilesize'] > 0 && $file['size'] > $fieldOptions['fieldfilesize']*1024) {
    			throw new ISC_QUOTE_EXCEPTION(sprintf(GetLang('InvalidFileSize'), $fieldOptions['fieldfilesize']));
    		}
    
    		// Store the uploaded files in our configured products directory
    		$uploadDirectory = ISC_BASE_PATH.'/'.GetConfig('ImageDirectory').'/configured_products_tmp/';
    		if (empty($file['existingPath'])) {
    			/**
    			 * @todo Implement temporary sharing/storage location with automatic pruning.
    			 */
    			$fileName = $fieldOptions['productfieldid'].'_'.md5(uniqid()).'.'.$extension;
    			if (!move_uploaded_file($file['tmp_name'], $uploadDirectory.$fileName)) {
    				throw new ISC_QUOTE_EXCEPTION(getLang('CanNotUploadFile'));
    			}
    		}
    		else {
    			$fileName = basename($file['existingPath']);
    		}
    
    		// If we've just uploaded an image, we need to perform a bit of additional validation
    		// to ensure it's not someone uploading bogus images.
    		$imageExtensions = array(
    			'gif',
    			'png',
    			'jpg',
    			'jpeg',
    			'jpe',
    			'tiff',
    			'bmp'
    		);
    		if (in_array($extension, $imageExtensions)) {
    			// Check a list of known MIME types to establish the type of image we're uploading
    			switch(isc_strtolower($file['type'])) {
    				case 'image/gif':
    					$imageType = IMAGETYPE_GIF;
    					break;
    				case 'image/jpg':
    				case 'image/x-jpeg':
    				case 'image/x-jpg':
    				case 'image/jpeg':
    				case 'image/pjpeg':
    				case 'image/jpg':
    					$imageType = IMAGETYPE_JPEG;
    					break;
    				case 'image/png':
    				case 'image/x-png':
    					$imageType = IMAGETYPE_PNG;
    					break;
    				case 'image/bmp':
    					$imageType = IMAGETYPE_BMP;
    					break;
    				case 'image/tiff':
    					$imageType = IMAGETYPE_TIFF_II;
    					break;
    				default:
    					$imageType = 0;
    			}
    
    			$imageDimensions = getimagesize($uploadDirectory.$fileName);
    			if (!is_array($imageDimensions) || $imageDimensions[2] != $imageType) {
    				@unlink($uploadDirectory.$fileName);
    				throw new ISC_QUOTE_EXCEPTION(GetLang('InvalidImageFile'));
    				return false;
    			}
    		}
    
    		return $fileName;
    	}
    Vorrei integrarla con XUpload
    Nel file di configurazione di XUplolad ci sono i seguenti parametri da impostare, ma non ho idea su come fare
    codice:
    package XUploadConfig;
    
    BEGIN
    {
      use Exporter;
      @XUploadConfig::ISA = qw( Exporter );
      @XUploadConfig::EXPORT = qw( $c );
    }
    
    our $c=
    {
     # Directory for temporary using files
     temp_dir        => '/var/www/cgi-bin/temp',
    
     # Directory for uploaded files
     target_dir      => '/var/www/cgi-bin/uploads',
    
     # Allowed file extensions delimited with '|'
     #ext_allowed     => 'jpg|jpeg|gif|png|rar|zip|mp3|avi|txt|csv',
     ext_allowed     => '.*',
    
     # URL to send all input values from upload page
     url_post        => 'http://site.com/post.php',
    
     # The link to redirect after complete upload
     # This setting can be submitted from HTML form, then it will have priority
     # url_post have priority over redirect
     redirect_link   => '',
    
     # Max length of uploaded filenames (without ext). Longer filenames will be cuted.
     max_name_length => 64,
    
     # Type of behavior when uploaded file already exist on disc. Available 3 modes: Rewrite/Rename/Warn
     copy_mode       => 'Rename',
    
     # Maximum total upload size in Mbytes
     max_upload_size => 100,      
    
     # Time to keep temp upload files on server, sec (24 hours = 86400 seconds)
     temp_files_lifetime => 86400,
    
    };
    
    1;
    È possibile integrare i 2 file?

    Grazie in anticipo

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Non ho guardato il tuo codice, ma credo di poterti rispondere ugualmente.

    è possibile integrare una funzione PHP già esistente con una funzione CGI?
    Messa cosi` non ha senso. Per l'interfaccia client-server puoi usare il PHP o un CGI (== Common Gateway Interface).

    Quello che puoi fare e` usare PHP per l'interfaccia e una serie di operazioni e da PHP chiamare un programma esterno (scritto in Perl, o qualsiasi altro linguaggio) per quello che non puoi fare tramite PHP.

    Io non conosco la sintassi PHP, ma c'e` sicuro un sistema per chiamare un file esterno. In Perl ci sono tre modi diversi (system(), exec(), `backquotes`) che ritornano in modo diverso; immagino che in PHP ci sia qualcosa di simile.

    Il problema che sorge a questo punto e` come passare i parametri (in avanti ed in indietro): prima scegli la tecnica da usare, chiarisci se i parametri sono pochi o tanti e di che tipo; e dopo si puo` valutare quale sia la tecnica migliore.

    Nota:
    Perl e` un linguaggio interpretato: di conseguenza e` piuttosto lento: vedi se e` la soluzione migliore o se qualche altro linguaggio puo` essere piu` performante.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  3. #3
    Ciao Mich_
    Grazie per la delucidazione

    è possibile lasciare queste funzioni:
    -Massima dimensione del file consentita
    -Archiviare i file caricati nella cartella
    -Assegnare un id unico/nome, ai file caricati
    -Controllare l'estensione del file
    a PHP

    richiamarle nel file cgi e lasciare a cgi solo il controllo dello stato di avanzamento del file?

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Ripeto.
    Non credo sia il caso di usare in contemporanea interfaccia PHP e interfaccia CGI.

    Non che non sia possibile, ma lo reputo masochistico (salvo che uno non conosca molto bene abedue le tecnologie).
    E comunque non puoi interfacciare una stessa pagina HTML con due tecnologie lato server: se proprio devi lavora re con PHP su una pagina, e poi passare ad una pagina diversa in CGI


    Ma se la tua idea e` di usare il CGI solo per il controllo dello stato di avanzamento, credo che fai meglio a cercare qualcosa di analogo in PHP: io non credo che non trovi qualcosa di gia` pronto.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  5. #5
    Purtroppo non sono riuscito a trovare nulla che non utilizzi flash o si basi sul modulo apc di php

    Avresti qualche script da suggerire?

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Come ho gia` detto, non ho mai usato PHP.

    Prova a chiedere nel forum relativo.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  7. #7
    Grazie Mich_

    Provo a chiedere nel forum php sperando di riuscire a trovare una soluzione

    Grazie ancora

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.