我正在使用 uploadify 将图像上传到服务器并将它们的文件名上传到数据库,然后使用 wordpress 动态生成将使用这些照片的页面。到目前为止,我所拥有的有时会起作用,有时却不起作用。
我希望uploadify 检查文件名是否已经存在(我将有数百个不同的用户上传图像),如果文件名匹配,我已经uploadify 返回一个错误,要求用户重命名文件。一旦文件成功上传。我删除了uploadify 按钮,并将文件名返回到将提交到我的数据库的隐藏字段。
然后我使用从数据库中提取的这个文件名来告诉 WP 在哪里查找文件。
但是,有时我会在创建的页面上成功查看文件,然后有时它会返回并告诉我禁止访问该文件。我已经阅读并发现了几个关于 uploadify 权限问题的案例,但我发现并尝试过的都没有成功。我尝试在uploadify.php 中添加一个chmod 命令,但没有成功。我尝试更改服务器上文件夹的权限,这对以后上传的文件没有任何影响。我不知道出了什么问题,甚至不知道从哪里开始解决问题。以下是我的 HTML(只是一个包含相关 uploadify 内容的摘录,因为完整的 HTML 页面非常大)和我的 uploadify.php 文件(有 2 个,因为我对每个文件都有不同的参数检查。
从标头上传脚本(两者):
$(function() {
$('#photo_upload').uploadify({
'buttonText' : 'Select File',
'multi' : false,
'method' : 'post',
'fileSizeLimit' : '100KB',
'height' : 20,
'swf' : 'uploadify-v3/uploadify.swf',
'uploader' : 'uploadify-v3/uploadify.php',
'onUploadStart' : function(file) {
$('#photo_upload').uploadify('settings','formData',{'upName' : $('#usersName').val()});
},
'onUploadSuccess' : function(file, data) {
if(data == 'failed'){
alert('The file you attempted to upload failed. Please check that the file meets all requirements, then try again. Thank you.');
} else if(data == 'FileNameExists'){
alert('An image with the same file name already exists. Please rename the file to a different name, then try again. Thank you.');
} else{
$("#photo_upload").remove();
var starting = data.indexOf("upload-images");
var savedAs = data.substring(starting+14 , data.indexOf(".jpg"))+".jpg";
document.form.photo.value = savedAs;
}
}
// Your options here
});
$('#logo_upload').uploadify({
'buttonText' : 'Select File',
'multi' : false,
'method' : 'post',
'fileSizeLimit' : '100KB',
'height' : 20,
'swf' : 'uploadify-v3/uploadify.swf',
'uploader' : 'uploadify-v3/uploadify2.php',
'onUploadStart' : function(file) {
$('#logo_upload').uploadify('settings','formData',{'upName' : $('#usersName').val()});
},
'onUploadSuccess' : function(file, data) {
if(data == 'failed'){
alert('The file you attempted to upload failed. Please check that the file meets all requirements, then try again. Thank you.');
} else if(data == 'FileNameExists'){
alert('An image with the same file name already exists. Please rename the file to a different name, then try again. Thank you.');
} else{
$("#logo_upload").remove();
var starting = data.indexOf("upload-images");
var savedAs = data.substring(starting+14 , data.indexOf(".jpg"))+".jpg";
document.form.logo.value = savedAs;
}
}
// Your options here
});
});
HTML(这只是上传按钮和字段的相关 HTML):
<span class="Form-Header">Upload Images</span>
<br />
<div id="Form-wrapper">
<div id="Form-wrapper-left">
Your Photograph:<br />
</div>
<div id="Form-wrapper-right">
<input name="photo" type="hidden" id="photo" value="NULL"/>
<input type="file" name="photo_upload" id="photo_upload" />
(Image Dimensions: 300w x 420h, JPEG) (100kb Size Limit)
</div>
<div id="clear" style="clear:both;"></div>
<br />
</div>
<div id="Form-wrapper">
<div id="Form-wrapper-left">
Your Logo:<br />
</div>
<div id="Form-wrapper-right">
<input name="logo" type="hidden" id="logo" value="NULL"/>
<input type="file" name="logo_upload" id="logo_upload" />
(Image Dimensions: 450w x 65h, JPEG) (100kb Size Limit)
</div>
<div id="clear" style="clear:both;"></div>
</div>
<div id="Form-wrapper">
<div id="Form-Footer"><strong>Next: </strong> Go <a href="#top">to the top of the page</a> and click on "Profile Information" to continue.<br />
</div>
<div id="clear" style="clear:both;"></div>
</div>
最后,但同样重要的是,这里是我的uploadify1 和uploadify2 的PHP 页面(我只显示一个,因为它们除了大小要求之外都是相同的):
<?php
// Define a destination
$targetFolder = '/Eye-Doctors/upload-images'; // Relative to the root
if (!empty($_FILES)) {
$tempFile = $_FILES['Filedata']['tmp_name'];
$size = getimagesize($tempFile);
if($size[0] <= 300 && $size[1] <= 420){
$targetPath = $_SERVER['DOCUMENT_ROOT'] . $targetFolder;
$targetFile = rtrim($targetPath,'/') . '/' . $_FILES['Filedata']['name'];
// Validate the file type
$fileTypes = array('jpg'); // File extensions
$fileParts = pathinfo($_FILES['Filedata']['name']);
if (in_array($fileParts['extension'],$fileTypes)) {
$exists = 0;
if( file_exists($targetFile) ) {
$exists = 1;
echo 'FileNameExists';
}
if($exists == 0){
move_uploaded_file($tempFile,$targetFile);
echo $targetFile;
}
} else {
echo 'failed';
}
} else{
echo 'failed';
}
}
?>
我真的希望这是足够的信息来获得一些帮助。我已经尝试到处寻找解决方案,但仍然找不到。如果还有什么我可以提供的帮助,请告诉我。