2017-02-02 2 views
0

J'essaie d'utiliser mes propres répertoires afin de télécharger des fichiers en eux, mais une erreur se produit lorsque je charge ma page « upload_test.php »répertoires utilisateur upload de fichiers jQuery

userPath is not defined 

J'ai essayé beaucoup de solutions pendant 2 jours, mais aucune n'a fonctionné :(

Voici mon code pour cette page

<form id="fileupload" action="UploadHandler.php?userPath=<?php echo $MYDIR;?>" method="POST" enctype="multipart/form-data"> 

Voici mon code dans main.js

$('#fileupload').fileupload({ 
    // Uncomment the following to send cross-domain cookies: 
    //xhrFields: {withCredentials: true}, 
    url: 'file_upload/server/php/index.php?userPath='+userPath, 
}); 

et index.php

error_reporting(E_ALL | E_STRICT); 

require('UploadHandler.php'); 

class CustomUploadHandler extends UploadHandler { 

protected function get_user_id() { 
    return $_REQUEST['userPath']; 
} 

protected function set_additional_file_properties($file) { 
    $file->deleteUrl = $this->options['script_url'] 
    .$this->get_query_separator($this->options['script_url']) 
    .$this->get_singular_param_name() 
    .'='.rawurlencode($file->name) 
    .'&userPath='.$_REQUEST['userPath'] 
    ; 
    $file->deleteType = $this->options['delete_type']; 
    if ($file->deleteType !== 'DELETE') { 
    $file->deleteUrl .= '&_method=DELETE'; 
    } 
    if ($this->options['access_control_allow_credentials']) { 
    $file->deleteWithCredentials = true; 
    } 
} 

} 

$upload_handler = new CustomUploadHandler(array(
'user_dirs' => true, 
)); 

Répondre

0

Je modifierais la fonction get_user_id() comme suit:

protected function get_user_id() { 
    return array_key_exists('userPath', $_REQUEST) ? $_REQUEST['userPath'] : ''; 
} 

Vous recevez un message AVIS de l'interpréteur PHP car il est pas garanti que la clé userPath existera toujours.

Chaque fois que vous interagissez avec des tableaux, par ex. le tableau $ _REQUEST, vous devez préparer votre application pour traiter le cas, que la clé particulière n'existe pas, sinon vous obtiendrez un message NOTICE, comme celui que vous avez ci-dessus.

+0

Merci pour votre réponse. En effet, ça marche mieux! Toutefois, les fichiers téléchargés ne sont pas enregistrés dans mon dossier personnalisé et seuls les fichiers directement sous le dossier de fichiers sont visibles. Je pense que UploadHandler ignore mon dossier personnalisé. –

+0

Pouvez-vous s'il vous plaît vérifier les points suivants: - Le dossier at-il les autorisations de fichier appropriées? - Le dossier existe-t-il où vous voulez placer les fichiers? - Avez-vous le droit de créer de nouveaux dossiers? – SaWo

+0

Tout est bon de ce côté. Mon dossier est créé et les autorisations sont correctes. J'ai essayé de changer cela dans main.js pour tester: url: 'file_upload/server/php/index.php? UserPath = MYDIR' et cela fonctionne. Mais je voudrais utiliser un paramètre (bien sûr!) –