【发布时间】:2016-10-31 17:36:18
【问题描述】:
我创建了一个带有普通输入字段的表单和一个 dropzone(与 previewzone 相同)
<form class="upload" method="post" action="galerie_upload.php">
<input id="vorname" name="vorname" type="text" placeholder="Ihr Vorname"/>
<div id="previews" class="dropzone"></div>
<input type="submit" name="button1" id="button1" value="Weiter" class="button" />
</form>
Drozone 脚本:
new Dropzone("div#previews", {
init: function() {
var myDropzone = this;
this.on("maxfilesexceeded", function(file){
myDropzone.removeFile(file);
}); }});
拖放区配置
url: "/galerie_upload.php",
method: "post",
withCredentials: true,
parallelUploads: 10,
uploadMultiple: false,
maxFilesize: 10,
paramName: "file",
createImageThumbnails: true,
maxThumbnailFilesize: 10,
thumbnailWidth: 100,
thumbnailHeight: 100,
maxFiles: 3,
params: {},
clickable: "#previews",
ignoreHiddenFiles: true,
acceptedFiles: ".png, .jpg, .jepg, .tiff, .gif, .jpeg, .pdf",
acceptedMimeTypes: null,
autoProcessQueue: true,
addRemoveLinks: true,
previewsContainer: "#previews",
galerie_upload.php
$storeFolder = 'uploads/';
$tempFile = $_FILES['file']['tmp_name'];
$targetPath = dirname( __FILE__ ) . $ds. $storeFolder ;
$newFileName = $_FILES['file']['name'];
$targetFile = $targetPath.$newFileName;
move_uploaded_file($tempFile,$targetFile);
工作正常!所有删除的文件都移动到“上传”目录(max3,只有图像等)。例如:pdf.jpg
现在,我想要一个个性化的文件名。使用文本输入字段中的输入值创建(填充)原始文件名。
一个带有日期工作的测试:
$time_short= date("d-m-Y");
$newFileName = $time_short.$_FILES['file']['name'];
上传文件夹中的结果
31-10-2016pdf.jpg
(稍后我可以使用“_”作为分隔符)
但这不起作用:
$newFileName = $vorname.$time_short.$_FILES['file']['name'];
结果与 31-10-2016pdf.jpg 相同。 $vorname 以“Stephan”为动力
一个echo $newFileName; 显示正确的文件名“Stephan31-10-2016”
让我(用于测试)一个像这样$vorname = 'stepgh';文件名也可以的php填充/"stepgh31-10-2016pdf.jpg"
问题出在哪里,解决方案如何?
谢谢
【问题讨论】:
-
不要那样做。
[name]可以包含路径信息,因为它是用户提供的数据。您允许用户在系统中的任何目录中乱写文件,例如['name'] = '../../../../../../../../../etc/passwd' -
谢谢,但我的表单中有很多验证测试。使用和不使用 jquery
标签: php file-upload dropzone.js