Sutar
BANNED | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Забыл выложить свой скрипт, который в результате спаял. Загружает на сервер "ТОЛЬКО" картинки, отсеиваю другие расширения файлов. Работает с multiple. HTML: Код: <form name="uploadphoto"><input type="file" name="photo[]" id="uploadphoto" onchange="LoadPre();" multiple></form> | JS: Код: /* Upload Photo */ var PhotoList=[]; var fload=false; var fcount=0; // Это стартовая функция загрузки. Она отбирает картинки с поля и закачивает их. function LoadPre(){ if(fload==false){ fload=true; fcount=document.getElementById("uploadphoto").files.length; for(var i=0;i<fcount;i++){ var formData=document.getElementById("uploadphoto").files[i]; var format=formData.name.replace(/(?:.)+\.(jpg|jpeg|png)/g,"$1"); if(format=="jpg"||format=="jpeg"||format=="png"){PhotoList.push(formData);} } fcount=PhotoList.length; if(fcount>0){LoadStart(1);}else{LoadEnd();} } return false; } //Функция непосредственно загрузки картинок из массива PhotoList function LoadStart(fnum){ if(http){ var format=PhotoList[fnum-1].name.replace(/(?:.)+\.(jpg|jpeg|png)/g,"$1"); var percent=0; http.onload=http.onerror=function(){ if(this.responseText!="true"){ alert(this.responseText); //Выводит ошибку (если она есть) } if(fcount==fnum){ // Если все фото закачали успешно. WLoaded("success","Successfully uploaded ("+fnum+" / "+fcount+") photo!"); // Показывает прогресс загрузки (загружено 3/3 фото) LoadEnd(); // Конец загрузки. Освобождение памяти и т.д. }else{ //Если есть ещё закачки в очереди. LoadStart(fnum+1); // Возвращаемся к след. файлу.... } }; http.upload.onprogress=function(event){ percent = getfloat((event.loaded*100)/event.total); // Процент загрузки... WLoading("Successfully uploaded ("+(fnum-1)+" / "+fcount+") photo. Complete "+getfloat(((fnum-1)*100+percent)/fcount)+"%<br>Loading photo #"+fnum+". Complete "+percent+"%"); // Показывает статус загрузки.... } http.open("POST","upload.php?&format=."+encodeURIComponent(format),true); http.send(PhotoList[fnum-1]); } return false; } //Освобождение массива и открытие функции LoadPre() function LoadEnd(){ fcount=0; PhotoList=[]; document.getElementById("uploadphoto").value=""; fload=false; return false; } function getfloat(n){ return Math.floor(n*100)/100; } /* ---------------------------- */ | PHP: Код: $name = get_random_string($lenght = 32); $fload = fopen("./photo/". $name . $_GET["format"], "w+"); while(!feof($file)) { $data = fread($file, 100000); fwrite($fload, $data); unset($data); } fclose($file); |
|