保存';用户名';作为文件名


Save 'Username' as Filename

我想知道是否有人能帮我。

我使用Aurigma的图像上传器,为了保存上传的图像,我把这个脚本放在一起。

<?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();
?>

我想做的是替换文件名的files元素,并将其替换为username,这样每个用户都可以识别每个保存的文件夹和关联的文件。

我在这个脚本从保存的表单中添加了一个用户名文本字段

我认为我说得对,这是需要更改$descriptions->save($absGalleryPath . 'files.xml');的行。

因此,在多次尝试中,我尝试将其更改为$descriptions->save($absGalleryPath . '$username.xml$descriptions->save($absGalleryPath . $username '.xml,但都没有成功,所以我不太确定需要更改什么。

我只是想知道是否有人可以看看这个,让我知道我哪里错了。

非常感谢

'$username.xml'将被解释为$username.xml,您需要使用"$username.xml"。单引号"禁用"字符串中的变量使用。

你正在尝试的可能是一个坏主意,因为你正在做的是让用户名不能包含"/"这样的"特殊字符"。如果你有一条规则,禁止"/"作为用户名的一部分,也许这不是问题。