[php][js] Uploadscript

Status
Niet open voor verdere reacties.

5blabla5

Gebruiker
Lid geworden
27 apr 2009
Berichten
485
Ik zoek al tijden een uploadscript dat 1 film bestand upload, en tijdens het uploaden een procesbalk weergeeft (die om de zoveel tijd wordt bijgewerkt). Ik heb zon beetje heel google leeg gezocht, maar ook hotscripts en diverse andere sites moesten er aan geloven :rolleyes:

Ik heb iets gelezen over Ajax, en ik denk dat dat hier bij moet.

Verder wil ik even melden dat ik liever geen CGI scripts of hele ingewikkelde scripts wil, aangezien ik ook nog een en ander moet aanpassen. Ik ben namelijk niet zo'n javascript deskundige :P

Mijn dank is groot als iemand een uploadscript weet wat ik goed kan gebruiken :D
 
Laatst bewerkt:
Wat je zal moeten doen
- bestand verzenden
- tmpnaam (ook size) van het bestand bijhouden in sessie
- elke sec een ajax script laten lopen die uw size van het bestand/ size van het temp bestand.
- dan enkel een procent weergeven.en uw size laten zien met css en grote van 2divs bvb


LET OP u hebt natuurlijk veel server activiteit dus chared hosting is af te raden
Zorg dat je altijd je script kan afzetten bij overbelasting . Je kan dan in samenspraak met je hosting kijken of een globale var is gezet zodat je elke intensieve actie als deze kan afbreken bij overbelasting van de server.Ik heb zelf ook zo'n systeem ingebouwd maar wordt nog niet toegepast zo gaat alle content die ik besliste in een zelfgemaakte cach staan die static wordt en bijgevolg sneller.

een uploadscript die je veel kopzorgen zal besparen kan dit zijn zie ook de linken naar de file die je kan opvragen. dus plaats je ook geen grote files in de database.(updates kan je van de repos halen !!!opensource!!!).
PHP:
<?php
include($autosite['functions']."GD/resizer.inc");
//echo "<div classe='right'><a href=\"$_SERVER[PHP_SELF]?key=".$kkey."&upload=1&id=".$path." \">Volgende upload</a><br>";
/**
 * http://be.php.net/manual/en/features.file-upload.common-pitfalls.php
 * http://be.php.net/manual/en/features.file-upload.multiple.php 
 * @author Lieven Roegiers
 * @copyright 2009 
 * @CMS autosite
 * Todo make links for multilink uploading
 * opensource http://code.google.com/p/autosite/ 
*/
class upload{
	private $UPL_trueext;
	private $maximgsize;
	private $links =array();
	/**
	 * @param $FILES	your $_FILES by reference
	 * @param $formdata	alle fields that can upload $formdata['items'][fieldname]
	 * @param $trueext	al true extentions array(".gif",".png")
	 * @param $to path	the path to move
	*/
	public function upload(&$FILES,&$formdata,$trueext,$topath){
		$this->UPL_trueext = $trueext;
       	if($FILES!=null&& is_array($FILES)){
       		foreach($FILES as $key=>$value){ //watch all sended files 
			   //print "<H2>$key = ".print_r($value)."</H2>";    			
       			if(is_array($formdata['items'])&& array_key_exists($key,$formdata['items'])){//is the file askt in form
					if($value['name']!=null ){//if there is a upload 
						if(is_array($value['name'])){//complex multiple upload
							foreach($value['name'] as $kkey=>$namevalue){
								$tmpname = $value['tmp_name'][$kkey];
								//todo is there a file uploaded
								if(self::isfile($namevalue,$value['error'][$kkey])){
									self::saveuploadedfile($tmpname,$namevalue,$topath,$key);
								}
							}
						}else{//normal single upload
							$tmpname =$value['tmp_name'];
							self::saveuploadedfile($value['tmp_name'],$value['name'],$topath,$key);	
						}
					}
       			}else{
       				print "upload.inc key not exist";
       			}
				//print_r($_FILES);
			}
		}
	}
	/**
	* @param $filename	string of the filename for get ext
	* @param $error	$value['error'][$kkey]   =>404 or anything else
	* @return true/false
	*/
	private function isfile($filename,$error){
		return ($this->is_trueext($this->getext($filename))&&$error<1);
	}
	/**
	* @return asoarray of the link to the files
	*/
	public function getlinks(){
		return $this->links;
	}
	/**
	* @param $ext	can use ext
	* TODO make control for mimes
	* @return true/false
	*/
	private function is_trueext($ext){
       	return in_array($ext,$this->UPL_trueext);
	}
	/**
	* @param $filename the name of the file
	* @return string extention and the point
	*/
	private function getext($filename){
		//$exts = split("[/\\.]", $filename);
		//$n = count($exts)-1;
		//$ext = $exts[$n];
       	return (string)strtolower(strrchr($filename,'.'));
	}
	/**
	* @param $tmpfile the name of the file to temp dir server
    * @param $filename new name on the server
    * @param $topath  the path on the server where we save the img
	* @return string extention and the point
	*/
	private function saveuploadedfile($tmpfile,$filename,$topath,$from="upload_"){
			if(!is_file($topath.$from.$filename)){
				$len = sizeof($this->links[$from]);
				$this->links[$from][$len]= $topath.$from.$filename;
				return move_uploaded_file($tmpfile,$topath.$from.$filename);
			}else{
				false;
			}
	}
	private function test(){
       print $_FILES['imgfile']['type'];
       print $_FILES['imgfile']['name'];
       print $_FILES['imgfile']['size'];
       print $_FILES['imgfile']['err'];
       print $_FILES['imgfile']['tmp_name'];
       //print_r($_FILES);
	}
	public function generatethump($height = 150,$with=0){
		if($ispic){
			$resizer = new resizer($_FILES);
			$resizer->MOVEthumppic_to();
			$resizer->MOVErealpic_to();
		} 
	}
}

?>
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan