2012-03-29 14 views
1

Ich frage mich, ob jemand mir bitte helfen könnte.Speichern Sie 'Benutzername' als Dateiname

Ich verwende Image Uploader von Aurigma, und um die hochgeladenen Bilder zu speichern, habe ich dieses Skript zusammengefügt.

<?php 

//This variable specifies relative path to the folder, where the gallery with uploaded files is located. 
//Do not forget about the slash in the end of the folder name. 
$galleryPath = 'UploadedFiles/'; 

require_once 'Includes/gallery_helper.php'; 

require_once 'ImageUploaderPHP/UploadHandler.class.php'; 

/** 
* FileUploaded callback function 
* @param $uploadedFile UploadedFile 
*/ 
function onFileUploaded($uploadedFile) { 

    $packageFields = $uploadedFile->getPackage()->getPackageFields(); 
    $userid = $packageFields["userid"]; 
    $locationid= $packageFields["locationid"]; 

    global $galleryPath; 

    $absGalleryPath = realpath($galleryPath) . DIRECTORY_SEPARATOR; 
    $absThumbnailsPath = $absGalleryPath . 'Thumbnails' . DIRECTORY_SEPARATOR; 

    if ($uploadedFile->getPackage()->getPackageIndex() == 0 && $uploadedFile->getIndex() == 0) { 
    initGallery($absGalleryPath, $absThumbnailsPath, FALSE); 
    } 

    $dirName = $_POST['folder']; 
    $dirName = preg_replace('/[^a-z0-9_\-\.()\[\]{}]/i', '_', $dirName); 
    if (!is_dir($absGalleryPath . $dirName)) { 
    mkdir($absGalleryPath . $dirName, 0777); 
    } 

    $path = rtrim($dirName, '/\\') . '/'; 

    $originalFileName = $uploadedFile->getSourceName(); 

    $files = $uploadedFile->getConvertedFiles(); 

    // save converter 1 

    $sourceFileName = getSafeFileName($absGalleryPath, $originalFileName); 
    $sourceFile = $files[0]; 
    /* @var $sourceFile ConvertedFile */ 
    if ($sourceFile) { 
    $sourceFile->moveTo($absGalleryPath . $sourceFileName); 
    } 

    // save converter 2 

    $thumbnailFileName = getSafeFileName($absThumbnailsPath, $originalFileName); 
    $thumbnailFile = $files[1]; 
    /* @var $thumbnailFile ConvertedFile */ 
    if ($thumbnailFile) { 
    $thumbnailFile->moveTo($absThumbnailsPath . $thumbnailFileName); 
    } 

    //Load XML file which will keep information about files (image dimensions, description, etc). 
    //XML is used solely for brevity. In real-life application most likely you will use database instead. 
    $descriptions = new DOMDocument('1.0', 'utf-8'); 
    $descriptions->load($absGalleryPath . 'files.xml'); 

    //Save file info. 
    $xmlFile = $descriptions->createElement('file'); 
    $xmlFile->setAttribute('name', $_POST['folder'] . '/' . $originalFileName); 
    $xmlFile->setAttribute('source', $sourceFileName); 
    $xmlFile->setAttribute('size', $uploadedFile->getSourceSize()); 
    $xmlFile->setAttribute('originalname', $originalFileName); 
    $xmlFile->setAttribute('thumbnail', $thumbnailFileName); 
    $xmlFile->setAttribute('description', $uploadedFile->getDescription()); 
    //Add additional fields 
    $xmlFile->setAttribute('userid', $userid); 
    $xmlFile->setAttribute('locationid', $locationid); 
    $xmlFile->setAttribute('folder', $dirName); 
    $descriptions->documentElement->appendChild($xmlFile); 
    $descriptions->save($absGalleryPath . 'files.xml'); 
} 

$uh = new UploadHandler(); 
$uh->setFileUploadedCallback('onFileUploaded'); 
$uh->processRequest(); 
?> 

Was ich möchte, ist das files Element des Dateinamens ersetzen und ersetzen Sie es mit dem username, so dass jeder gespeicherten Ordner und die zugehörigen Dateien können für jeden Benutzer identifiziert werden.

Ich habe einen Benutzernamen Textfeld zu dem Formular hinzugefügt, die dieses Skript speichert von

Ich glaube, ich bin zu Recht sagen, dass diese Linie ist, die $descriptions->save($absGalleryPath . 'files.xml'); ändern muss.

Also unter vielen Versuchen habe ich versucht, dies zu $descriptions->save($absGalleryPath . '$username.xml, $descriptions->save($absGalleryPath . $username '.xml, aber keiner von diesen hat funktioniert, so dass ich nicht ganz sicher bin, was ich ändern muss.

Ich habe mich nur gefragt, ob sich jemand das bitte ansehen könnte und lass mich wissen, wo ich falsch liege.

Vielen Dank

Antwort

0

'$ username.xml' wird wie $ username.xml interpretiert werden, müssen Sie "$ username.xml" verwenden. Einfache Anführungszeichen "deaktivieren" die Verwendung von Variablen in Strings.

Was Sie versuchen, kann eine schlechte Idee sein, da Sie so machen, dass ein Benutzername keine Sonderzeichen wie "/" enthalten darf. Vielleicht ist das kein Problem, wenn Sie bereits eine Regel haben, die "/" als Teil eines Benutzernamens stoppt.

+0

Vielen Dank, dass Sie sich die Zeit genommen haben, mir zu helfen. Mit freundlichen Grüßen. – IRHM

Verwandte Themen