input('uid'); $sujet_id = $request->input('sujet_id'); $dossier_id = $request->input('dossier_id'); if($dossier_id == 0) $dossier_id = null; $headers = $request->headers->all(); $acceptFileTypes = array('gif','jpeg', 'jpg','png','mp4','mp3','psd','ai','eps','svg','indd','pdf'); if ($request->hasFile('files')) { $file = $request->file('files'); foreach($file as $files){ $is_last_chunk = false; $is_chunked_upload = !empty($headers['content-range']); if ($is_chunked_upload) { if (preg_match('|(\d+)/(\d+)|', $headers['content-range'][0], $range)) { if ($range[1] == $range[2] - 1) { $is_last_chunk = true; } } } $extension = strtolower($files->getClientOriginalExtension()); $originalName = str_replace( ".".$extension, "", $files->getClientOriginalName()); if (!in_array($extension, $acceptFileTypes)) return array("false"); if($is_chunked_upload){ $filename = $uid."_".$range[1].".".$extension; }else{ $filename = $uid.'.'.$extension; } $uploadPath = public_path() . '/uploads/'; $files->move($uploadPath, $filename); // si c'est le dernier morceux d'un fichier if($is_last_chunk){ if($dossier = opendir($uploadPath)){ $dirFiles = array(); // on compile tous les chunk du fichier while(false !== ($fichier = readdir($dossier))){ if($fichier != '.' && $fichier != '..' ){ if(strpos($fichier,$uid) !== false){ $dirFiles[$fichier] = str_replace(".".$extension, "", str_replace($uid."_", "", $fichier)); } } } closedir($dossier); // on les trie pour les assembler dans le bon ordre asort ($dirFiles, SORT_NUMERIC ); // on les assemble dans un fichier final $filename = $uid . '.' . $extension; foreach($dirFiles as $key => $fichier) { $file = fopen($uploadPath.$key, 'rb'); $buff = fread($file, filesize($uploadPath.$key)); fclose($file); $final = fopen($uploadPath.$filename, 'a'); $write = fwrite($final, $buff); fclose($final); unlink($uploadPath.$key); } } } // si c'est le dernier morceau d'un fichier ou que c'est un envoi simple if($is_last_chunk || !$is_chunked_upload ){ // On déplace le fichier dans le répertoire des médias $destinationPath = $this->get_mediaFolder()."/"; Storage::move("uploads/".$filename, $destinationPath.$filename); // on créé un média en bdd $media = new Media(); $media->dossier_id = $dossier_id; $media->sujet_id = $sujet_id; $media->libelle = $originalName; $media->extension = $extension; $media->folder = $destinationPath; if($user = Auth::user()){ $media->created_by= $user->id; } $media->uid = $uid; $media->taille = $this->formatBytes($this->get_file_size($destinationPath.$filename)); switch ($extension) { // Photo (1) case 'gif': case 'jpeg': case 'jpg': case 'png': $media->typemedia_id = 1; $im = new \imagick($destinationPath.$filename); if($extension == "gif" ){ $im->setIteratorIndex(0); } $resolutions = $im->getImageResolution(); $media->resolution = $resolutions['x']; $imageprops = $im->getImageGeometry(); $media->largeur = $imageprops['width']; $media->hauteur = $imageprops['height']; if($media->resolution != 0){ $media->largeur_mm = ceil(($media->largeur * 2.54 / $media->resolution)*10); $media->hauteur_mm = ceil(($media->hauteur * 2.54 / $media->resolution)*10); }else{ $media->largeur_mm = ""; $media->hauteur_mm = ""; } $media->save(); // ---- Creation des vignettes de base $this->create_sys_thumb($media); // ---- Creation des vignettes en lien avec le sujet du média $this->create_thumb($media); break; // Illustration/Vectorielle (2) case 'svg': $media->typemedia_id = 2; $media->save(); break; // Vidéo (3) case 'mp4': $media->typemedia_id =3 ; $getID3 = new \getID3; if($fileInfo = $getID3->analyze($destinationPath.$filename)){ $media->largeur = $fileInfo['video']['resolution_x']; $media->hauteur = $fileInfo['video']['resolution_y']; $media->duree = $fileInfo['playtime_string']; } $media->save(); break; // Audio (4) case 'mp3': $media->typemedia_id = 4; $getID3 = new \getID3; if($fileInfo = $getID3->analyze($destinationPath.$filename)){ $media->duree= $fileInfo['playtime_string']; } $media->save(); break; // Document (5) case 'ai': case 'eps': case 'indd': case 'pdf': case 'psd': default: $media->typemedia_id = 5; if(in_array($extension, array("pdf", "ai", "psd")) ){ $im = new \imagick(); $im->readImage($destinationPath.$filename); if($extension == "pdf" || $extension == "psd" || $extension == "ai"){ $im->setIteratorIndex(0); } $imageprops = $im->getImageGeometry(); $media->largeur = $imageprops['width']; $media->hauteur = $imageprops['height']; $resolutions = $im->getImageResolution(); $media->resolution = $resolutions['x']; if($media->resolution != 0){ $media->largeur_mm = ceil(($media->largeur * 2.54 / $media->resolution)*10); $media->hauteur_mm = ceil(($media->hauteur * 2.54 / $media->resolution)*10); }else{ $media->largeur_mm = ""; $media->hauteur_mm = ""; } $media->save(); $im->destroy(); // ---- Creation des vignettes de base $this->create_sys_thumb($media); // ---- Creation des vignettes en lien avec le sujet du média $this->create_thumb($media); } break; } } $filest = array(); $filest['name'] = $filename; $filest['uid'] = $uid; $filesa['files'][]=$filest; } return $filesa; } } }