Gestion de l'upload côté server ok.
Création du module 'upload' et modification de 'ModuleRequest' pour transformer un fichier ($_FILES) en paramètre passé au module
This commit is contained in:
parent
b94c2fcd05
commit
2556448a9c
|
@ -177,6 +177,17 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
"upload": {
|
||||||
|
|
||||||
|
"call_log": {
|
||||||
|
"description": "Upload d'un journal d'appel au format .xml.",
|
||||||
|
"permissions": ["admin"],
|
||||||
|
"parameters": {
|
||||||
|
"file": { "description": "Fichier du journal d'appel", "type": "FILE" }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"root": "/src/dynamic/",
|
"root": "/src/upload/",
|
||||||
"auth": [
|
"directories": [
|
||||||
"call_log",
|
"call_log",
|
||||||
"spss",
|
"spss",
|
||||||
"pspp"
|
"pspp"
|
||||||
|
|
|
@ -7,4 +7,4 @@ sociogramClass.prototype.arrange=function(a,b,d){var c=this.sigma.graph.nodes(a)
|
||||||
Math.PI;for(var g=0;g<c.length;g++)if(Math.abs(d-c[g])>Math.PI/10){e=!0;break}}while(e);a.x=b.x+this.nodeDistance*Math.cos(d);a.y=b.y+this.nodeDistance*Math.sin(d);this.arrange(a.id)}this.sigma.refresh()}};sociogramClass.prototype.overload.nodeNeighbors=function(a){a=this.allNeighborsIndex[a];var b=[],d;for(d in a)b.push(d);for(;0<b.length;){d=this.allNeighborsIndex[b[0]];for(var c in d)null==a[c]&&(b.push(c),a[c]=d[c]);b.shift()}return a};sociogramClass.prototype.overload.nodeDirectNeighbors=function(a){return this.allNeighborsIndex[a]};
|
Math.PI;for(var g=0;g<c.length;g++)if(Math.abs(d-c[g])>Math.PI/10){e=!0;break}}while(e);a.x=b.x+this.nodeDistance*Math.cos(d);a.y=b.y+this.nodeDistance*Math.sin(d);this.arrange(a.id)}this.sigma.refresh()}};sociogramClass.prototype.overload.nodeNeighbors=function(a){a=this.allNeighborsIndex[a];var b=[],d;for(d in a)b.push(d);for(;0<b.length;){d=this.allNeighborsIndex[b[0]];for(var c in d)null==a[c]&&(b.push(c),a[c]=d[c]);b.shift()}return a};sociogramClass.prototype.overload.nodeDirectNeighbors=function(a){return this.allNeighborsIndex[a]};
|
||||||
sociogramClass.prototype.extractNodesFromResponse=function(){this.nodes=[];for(var a=0;a<this.response.data.alter.length;a++)this.nodes.push({id:"n-"+this.response.data.alter[a][0],label:this.response.data.alter[a][1],x:0,y:0,size:this.response.data.alter[a][2]})};
|
sociogramClass.prototype.extractNodesFromResponse=function(){this.nodes=[];for(var a=0;a<this.response.data.alter.length;a++)this.nodes.push({id:"n-"+this.response.data.alter[a][0],label:this.response.data.alter[a][1],x:0,y:0,size:this.response.data.alter[a][2]})};
|
||||||
sociogramClass.prototype.extractEdgesFromResponse=function(){this.edges=[];for(var a=0;a<this.response.data.inter.length;a++)this.edges.push({id:"e-"+this.response.data.inter[a][0]+"-"+this.response.data.inter[a][1],source:"n-"+this.response.data.inter[a][0],target:"n-"+this.response.data.inter[a][1]})};sociogramClass.prototype.addNodes=function(){for(var a=0;a<this.nodes.length;a++)this.sigma.graph.addNode(this.nodes[a])};sociogramClass.prototype.addEdges=function(){for(var a=0;a<this.edges.length;a++)this.sigma.graph.addEdge(this.edges[a])};
|
sociogramClass.prototype.extractEdgesFromResponse=function(){this.edges=[];for(var a=0;a<this.response.data.inter.length;a++)this.edges.push({id:"e-"+this.response.data.inter[a][0]+"-"+this.response.data.inter[a][1],source:"n-"+this.response.data.inter[a][0],target:"n-"+this.response.data.inter[a][1]})};sociogramClass.prototype.addNodes=function(){for(var a=0;a<this.nodes.length;a++)this.sigma.graph.addNode(this.nodes[a])};sociogramClass.prototype.addEdges=function(){for(var a=0;a<this.edges.length;a++)this.sigma.graph.addEdge(this.edges[a])};
|
||||||
sociogramClass.prototype.bindings.clickNode=function(a,b){console.log(a);var d=b.data.node.id,c=a.sigma.graph.nodeNeighbors(d);c[d]=b.data.node;a.sigma.graph.nodes().forEach(function(a){a.color=null!=c[a.id]?a.originalColor:"#eee"});a.sigma.refresh()};sociogramClass.prototype.bindings.clickStage=function(a,b){a.sigma.graph.nodes().forEach(function(a){a.color=a.originalColor});a.sigma.refresh()};
|
sociogramClass.prototype.bindings.clickNode=function(a,b){console.log(a);var d=b.data.node.id,c=a.sigma.graph.nodeNeighbors(d);c[d]=b.data.node;a.sigma.graph.nodes().forEach(function(a){a.color=null!=c[a.id]?a.originalColor:"#888"});a.sigma.refresh()};sociogramClass.prototype.bindings.clickStage=function(a,b){a.sigma.graph.nodes().forEach(function(a){a.color=a.originalColor});a.sigma.refresh()};
|
||||||
|
|
|
@ -456,7 +456,7 @@ sociogramClass.prototype.bindings.clickNode = function(thisPtr, e){
|
||||||
|
|
||||||
thisPtr.sigma.graph.nodes().forEach(function(n) {
|
thisPtr.sigma.graph.nodes().forEach(function(n) {
|
||||||
if( neighborNodes[n.id] != null ) n.color = n.originalColor;
|
if( neighborNodes[n.id] != null ) n.color = n.originalColor;
|
||||||
else n.color = '#eee';
|
else n.color = '#888';
|
||||||
});
|
});
|
||||||
|
|
||||||
thisPtr.sigma.refresh();
|
thisPtr.sigma.refresh();
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
function APIClass(b){this.target=b}
|
function APIClass(b){this.target=b}
|
||||||
APIClass.prototype={xhr:[],send:function(b,c,d){b.hasOwnProperty("path")||c({ModuleError:4});for(var a=0;a<this.xhr.length;a++)4==this.xhr[a].readyState&&(this.xhr=this.xhr.slice(0,a-1).concat(this.xhr.slice(a,this.xhr.length-1)));this.xhr.push(null);a=this.xhr.length-1;this.xhr[a]=window.XMLHttpRequest?new XMLHttpRequest:new ActiveXObject("Microsoft.XMLHttpRequest");console.log(b);var f=this;this.xhr[a].onreadystatechange=function(){if(4==f.xhr[a].readyState)if(-1<[0,200].indexOf(f.xhr[a].status))try{c(JSON.parse(f.xhr[a].responseText))}catch(b){c({ModuleError:1})}else c({ModuleError:3})};
|
APIClass.prototype={xhr:[],send:function(b,d,e){b.hasOwnProperty("path")||d({ModuleError:4});for(var a=0;a<this.xhr.length;a++)4==this.xhr[a].readyState&&(this.xhr=this.xhr.slice(0,a-1).concat(this.xhr.slice(a,this.xhr.length-1)));this.xhr.push(null);a=this.xhr.length-1;this.xhr[a]=window.XMLHttpRequest?new XMLHttpRequest:new ActiveXObject("Microsoft.XMLHttpRequest");console.log(b);var c=this;this.xhr[a].onreadystatechange=function(){if(4==c.xhr[a].readyState)if(-1<[0,200].indexOf(c.xhr[a].status))try{d(JSON.parse(c.xhr[a].responseText))}catch(b){d({ModuleError:1})}else d({ModuleError:3})};
|
||||||
var h=new FormData,g;for(g in b)h.append(g,b[g]);this.xhr[a].open("POST",this.target,!0);null!=d&&this.xhr[a].setRequestHeader("Authorization","Digest "+d);this.xhr[a].send(h)}};
|
var g=new FormData,f;for(f in b)g.append(f,b[f]);this.xhr[a].open("POST",this.target,!0);null!=e&&this.xhr[a].setRequestHeader("Authorization","Digest "+e);this.xhr[a].send(g)}};
|
||||||
function fileUploader(b,c,d){c=new FormData;c.append("filename",filename);c.append("file",b,b.name);var a=window.XMLHttpRequest?new XMLHttpRequest:new ActiveXObject("Microsoft.XMLHttpRequest");a.open("POST","manager/import.php",!0);a.onreadystatechange=function(){4==a.readyState&&-1<[0,200].indexOf(a.status)&&(console.log("[1] IMPORT=> "+a.responseText),"success"==a.responseText?API.send({level_0:"excel",level_1:"import_inscrits"},function(a){console.log("[2] PARSE=>"+a.request);"success"==a.request?
|
function fileUploader(b,d,e){var a=new FormData;a.append("prefix",d);a.append("file",b,b.name);var c=window.XMLHttpRequest?new XMLHttpRequest:new ActiveXObject("Microsoft.XMLHttpRequest");c.open("POST","/manager/uploader.php",!0);c.onreadystatechange=function(){4==c.readyState&&-1<[0,200].indexOf(c.status)&&e(c.responseText)};c.send(a)};
|
||||||
(requestIntegration={level_0:"groups",level_1:"addUserlist",rang:rang,annee:annee,formationList:a.formationList},API.send(requestIntegration,function(a){console.log("[3] INTEGRATION=>"+a.request);"success"==a.request?(console.log("liste int\u00e9gr\u00e9e"),reload()):(console.log("integration error"),makeBounce(e.target.parentNode))})):(console.log("import error"),makeBounce(e.target.parentNode),console.log(e.target))}):makeBounce(e.target.parentNode))};a.send(c)};
|
|
||||||
|
|
|
@ -120,51 +120,18 @@ APIClass.prototype = {
|
||||||
function fileUploader(file, prefix, handler){
|
function fileUploader(file, prefix, handler){
|
||||||
/* [1] IMPORTATION DU FICHIER
|
/* [1] IMPORTATION DU FICHIER
|
||||||
=======================================*/
|
=======================================*/
|
||||||
var fd = new FormData();
|
var postdata = new FormData();
|
||||||
fd.append('filename', filename);
|
postdata.append('prefix', prefix);
|
||||||
fd.append('file', file, file.name);
|
postdata.append('file', file, file.name);
|
||||||
|
|
||||||
var xhr = (window.XMLHttpRequest) ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHttpRequest');
|
var xhr = (window.XMLHttpRequest) ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHttpRequest');
|
||||||
|
|
||||||
xhr.open('POST', 'manager/import.php', true);
|
xhr.open('POST', '/manager/uploader.php', true);
|
||||||
|
|
||||||
xhr.onreadystatechange = function(){
|
xhr.onreadystatechange = function(){
|
||||||
if( xhr.readyState == 4 && [0, 200].indexOf(xhr.status) > -1 ){
|
if( xhr.readyState == 4 && [0, 200].indexOf(xhr.status) > -1 )
|
||||||
|
handler( xhr.responseText );
|
||||||
|
};
|
||||||
|
|
||||||
console.log('[1] IMPORT=> '+xhr.responseText);
|
xhr.send(postdata);
|
||||||
if( xhr.responseText == 'success' ){
|
|
||||||
/* [2] LECTURE DU FICHIER
|
|
||||||
=======================================*/
|
|
||||||
var request = { level_0: 'excel', level_1: 'import_inscrits' };
|
|
||||||
API.send(request, function(ex){
|
|
||||||
console.log('[2] PARSE=>'+ex.request);
|
|
||||||
if( ex.request == 'success' ){
|
|
||||||
|
|
||||||
/* [3] INTÉGRATION À LA BDD
|
|
||||||
=======================================*/
|
|
||||||
requestIntegration = { level_0: 'groups', level_1: 'addUserlist', rang: rang, annee: annee, formationList: ex.formationList };
|
|
||||||
API.send( requestIntegration, function(f){
|
|
||||||
console.log('[3] INTEGRATION=>'+f.request);
|
|
||||||
if( f.request == 'success' ){
|
|
||||||
console.log('liste intégrée');
|
|
||||||
reload();
|
|
||||||
}else{
|
|
||||||
console.log('integration error');
|
|
||||||
makeBounce(e.target.parentNode);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
}else{
|
|
||||||
console.log('import error');
|
|
||||||
makeBounce(e.target.parentNode);
|
|
||||||
console.log( e.target );
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}else makeBounce(e.target.parentNode);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
xhr.send(fd);
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -337,10 +337,6 @@
|
||||||
|
|
||||||
$method = $this->modules[$this->path['module']][$this->path['method']];
|
$method = $this->modules[$this->path['module']][$this->path['method']];
|
||||||
|
|
||||||
// Si le nombre de parametre en entree est insuffisant
|
|
||||||
// if( count($method['parameters']) > count($params) ) return false;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* [2] Si le type est defini, pour chaque param, on teste
|
/* [2] Si le type est defini, pour chaque param, on teste
|
||||||
=========================================================*/
|
=========================================================*/
|
||||||
|
@ -348,20 +344,28 @@
|
||||||
/* (1) On récupère si le paramètre est optionnel ou pas */
|
/* (1) On récupère si le paramètre est optionnel ou pas */
|
||||||
$optional = isset($paramsdata['optional']) && $paramsdata['optional'] === true;
|
$optional = isset($paramsdata['optional']) && $paramsdata['optional'] === true;
|
||||||
|
|
||||||
/* (2) Si le paramètre est obligatoire et qu'il n'est pas donné -> erreur */
|
/* (2) Récupère si le paramètre est un fichier et définit comme de type 'FILE' */
|
||||||
if( !isset($params[$name]) && !$optional ) return false;
|
$isFile = isset($paramsdata['type']) && $paramsdata['type'] == 'FILE' && isset($_FILES[$name]);
|
||||||
|
|
||||||
/* (3) Si le type n'est pas defini, on a pas besoin de le vérifier */
|
/* (3) Si le paramètre est obligatoire et qu'il n'est pas donné -> erreur */
|
||||||
|
if( !isset($params[$name]) && !$optional && !$isFile ) return false;
|
||||||
|
|
||||||
|
/* (4) Si le type n'est pas defini, on a pas besoin de le vérifier */
|
||||||
if( !isset($paramsdata['type']) ) continue;
|
if( !isset($paramsdata['type']) ) continue;
|
||||||
|
|
||||||
/* (4) Si le paramètre est optionnel et n'est pas donné */
|
/* (5) Si le paramètre est optionnel et n'est pas donné */
|
||||||
if( $optional && (!isset($params[$name]) || is_null($params[$name])) ){
|
if( $isFile || $optional && (!isset($params[$name]) || is_null($params[$name])) ){
|
||||||
// On le crée avec la valeur NULL
|
// On le crée le param optionnel avec la valeur NULL
|
||||||
$params[$name] = null;
|
$params[$name] = null;
|
||||||
// On passe au paramètre suivant
|
|
||||||
continue;
|
|
||||||
|
|
||||||
/* (5) Si le paramètre est renseigné */
|
// On donne une référence vers le fichier, si c'en est un
|
||||||
|
if( $isFile )
|
||||||
|
$params[$name] = &$_FILES[$name];
|
||||||
|
|
||||||
|
continue; // On passe au paramètre suivant
|
||||||
|
|
||||||
|
|
||||||
|
/* (6) Si le paramètre est renseigné */
|
||||||
}else
|
}else
|
||||||
// Si la verification est fausse, on retourne faux
|
// Si la verification est fausse, on retourne faux
|
||||||
if( !Database::check($paramsdata['type'], $params[$name]) ) return false;
|
if( !Database::check($paramsdata['type'], $params[$name]) ) return false;
|
||||||
|
|
|
@ -0,0 +1,101 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace manager\module;
|
||||||
|
use \manager\Database;
|
||||||
|
use \manager\ResourceDispatcher;
|
||||||
|
use \manager\sessionManager;
|
||||||
|
use \manager\ManagerError;
|
||||||
|
use \manager\Repo;
|
||||||
|
|
||||||
|
class upload{
|
||||||
|
|
||||||
|
/* EFFECTUE UN UPLOAD D'UN fichier
|
||||||
|
*
|
||||||
|
* @prefix<String> Préfixe (dossier parent) du fichier
|
||||||
|
* @file<FILE> Pointeur vers $_FILES['']
|
||||||
|
*
|
||||||
|
* @return error<ManagerError> Retourne l'erreur attestant de l'état de l'upload
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
private static function simpleFile($prefix, $file){
|
||||||
|
/* [0] On formatte les entrées
|
||||||
|
=========================================================*/
|
||||||
|
$prefix = htmlspecialchars($prefix);
|
||||||
|
|
||||||
|
// Si $prefix n'est pas au bon format
|
||||||
|
if( !preg_match('/^[a-z0-9_-]+$/', $prefix) )
|
||||||
|
return ManagerError::UploadError;
|
||||||
|
|
||||||
|
|
||||||
|
/* [1] Chargement du fichier de config
|
||||||
|
=========================================================*/
|
||||||
|
/* (1) On récupère le fichier */
|
||||||
|
$uploadAuthResource = new ResourceDispatcher('f/json/upload-auth/conf');
|
||||||
|
|
||||||
|
/* (2) Si une erreur pour le fichier de conf */
|
||||||
|
if( $uploadAuthResource->error != ManagerError::Success )
|
||||||
|
return $uploadAuthResource->error;
|
||||||
|
|
||||||
|
/* (3) On récupère la config sous forme de tableau */
|
||||||
|
$uploadAuth = json_decode( $uploadAuthResource->getContent(), true );
|
||||||
|
|
||||||
|
/* (4) Si erreur de PARSAGE */
|
||||||
|
if( $uploadAuth == null )
|
||||||
|
return ManagerError::ParsingFailed;
|
||||||
|
|
||||||
|
/* [2] Vérification du préfixe
|
||||||
|
=========================================================*/
|
||||||
|
// Si le préfixe n'est pas dans la config -> erreur
|
||||||
|
if( !in_array($prefix, $uploadAuth['directories']) )
|
||||||
|
returnManagerError::UploadError;
|
||||||
|
|
||||||
|
|
||||||
|
/* [3] Construction du chemin
|
||||||
|
=========================================================*/
|
||||||
|
/* (1) On construit le chemin */
|
||||||
|
$path = __ROOT__.$uploadAuth['root'].'/'.$prefix.'/';
|
||||||
|
|
||||||
|
/* (2) On crée le dossier s'il n'existe pas */
|
||||||
|
if ( !file_exists($path) ) mkdir($path, 0775, true);
|
||||||
|
|
||||||
|
/* (3) On construit le nom du fichier */
|
||||||
|
$fileName = $_SESSION['username'].'.'; // Nom
|
||||||
|
$fileName .= pathinfo($file['name'], PATHINFO_EXTENSION); // Extension
|
||||||
|
|
||||||
|
/* (4) On se place dans le dossier */
|
||||||
|
chdir( $path );
|
||||||
|
|
||||||
|
/* [4] Création du fichier (temporaire->permanent)
|
||||||
|
=========================================================*/
|
||||||
|
if( move_uploaded_file($file['tmp_name'], $path.$fileName) ){
|
||||||
|
// on modifie les droits du fichier
|
||||||
|
chmod($path.$fileName, 0774);
|
||||||
|
|
||||||
|
return ManagerError::Success;
|
||||||
|
|
||||||
|
}else
|
||||||
|
return ManagerError::UploadError;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* IMPORT D'UN JOURNAL D'APPEL
|
||||||
|
*
|
||||||
|
* @file<FILE> Pointeur vers $_FILES['']
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public static function call_log($params){
|
||||||
|
extract($params);
|
||||||
|
|
||||||
|
return array(
|
||||||
|
'ModuleError' => self::simpleFile('call_log', $file)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
?>
|
|
@ -13,39 +13,49 @@ use \manager\ManagerError;
|
||||||
exit();
|
exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
$prefix = htmlspecialchars(urlencode($_POST['prefix']));
|
$prefix = htmlspecialchars($_POST['prefix']);
|
||||||
|
|
||||||
|
// Si $prefix n'est pas au bon format
|
||||||
|
if( !preg_match('/^[a-z0-9_-]+$/', $prefix) ){ echo ManagerError::UploadError; exit(); }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* [1] Chargement du fichier de config
|
/* [1] Chargement du fichier de config
|
||||||
=========================================================*/
|
=========================================================*/
|
||||||
|
/* (1) On récupère le fichier */
|
||||||
$uploadAuthResource = new ResourceDispatcher('f/json/upload-auth/conf');
|
$uploadAuthResource = new ResourceDispatcher('f/json/upload-auth/conf');
|
||||||
// Si une erreur pour le fichier de conf
|
|
||||||
|
/* (2) Si une erreur pour le fichier de conf */
|
||||||
if( $uploadAuthResource->error != ManagerError::Success ){ echo $uploadAuthResource->error; exit(); }
|
if( $uploadAuthResource->error != ManagerError::Success ){ echo $uploadAuthResource->error; exit(); }
|
||||||
|
|
||||||
// On récupère la config
|
/* (3) On récupère la config sous forme de tableau */
|
||||||
$uploadAuth = json_decode( $uploadAuthResource->getContent(), true );
|
$uploadAuth = json_decode( $uploadAuthResource->getContent(), true );
|
||||||
|
|
||||||
// Si erreur de PARSAGE
|
/* (4) Si erreur de PARSAGE */
|
||||||
if( $uploadAuth == null ){ echo ManagerError::ParsingFailed; exit(); }
|
if( $uploadAuth == null ){ echo ManagerError::ParsingFailed; exit(); }
|
||||||
|
|
||||||
var_dump( $uploadAuth );
|
/* [2] Vérification du préfixe
|
||||||
|
|
||||||
|
|
||||||
/* [2] Création du fichier (temporaire->permanent)
|
|
||||||
=========================================================*/
|
=========================================================*/
|
||||||
|
// Si le préfixe n'est pas dans la config -> erreur
|
||||||
|
if( !in_array($prefix, $uploadAuth['directories']) ){ echo ManagerError::UploadError; exit(); }
|
||||||
|
|
||||||
|
|
||||||
/* [3] Gestion de la réponse
|
/* [3] Construction du chemin
|
||||||
=========================================================*/
|
=========================================================*/
|
||||||
$path = __ROOT__.'/src/dynamic/'.$_POST['prefix'].'/';
|
/* (1) On construit le chemin */
|
||||||
$fileName = 'test.';
|
$path = __ROOT__.$uploadAuth['root'].'/'.$_POST['prefix'].'/';
|
||||||
// On récupère l'extension
|
|
||||||
$fileName .= pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION);
|
|
||||||
|
|
||||||
// on se place dans /src/dynamic/XX
|
/* (2) On crée le dossier s'il n'existe pas */
|
||||||
|
if ( !file_exists($path) ) mkdir($path, 0777, true);
|
||||||
|
|
||||||
|
/* (3) On construit le nom du fichier */
|
||||||
|
$fileName = $_SESSION['username'].'.'; // Nom
|
||||||
|
$fileName .= pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION); // Extension
|
||||||
|
|
||||||
|
/* (4) On se place dans le dossier */
|
||||||
chdir( $path );
|
chdir( $path );
|
||||||
// chmod( $path, 0774 );
|
/* [4] Création du fichier (temporaire->permanent)
|
||||||
|
=========================================================*/
|
||||||
if( move_uploaded_file($_FILES['file']['tmp_name'], $path.$fileName) ){
|
if( move_uploaded_file($_FILES['file']['tmp_name'], $path.$fileName) ){
|
||||||
// on modifie les droits du fichier
|
// on modifie les droits du fichier
|
||||||
chmod($path.$fileName, 0774);
|
chmod($path.$fileName, 0774);
|
||||||
|
|
2
view.php
2
view.php
|
@ -105,7 +105,7 @@
|
||||||
|
|
||||||
|
|
||||||
<!-- Dépendences Javascript après chargement des éléments -->
|
<!-- Dépendences Javascript après chargement des éléments -->
|
||||||
<script type='text/javascript' src='/f/js/action-script/js'></script>
|
<script type='text/javascript' src='/f/js/action-script-min/js'></script>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
Loading…
Reference in New Issue