【发布时间】:2013-11-12 04:32:52
【问题描述】:
我正在尝试在网站上实现 uploadify。
它说文件已上传,但是当我查看上传文件夹时,什么都没有。
我没有运气读过其他类似的帖子。
我确实阅读了this answer 另一个问题:
我在 Linux 机器上遇到过类似的问题。原来我服务器上的 PHP 配置是 cuplrit。 PHP 在安全模式下运行。由于我通过 FTP 上传了 Uploadify 脚本,因此脚本文件与我的 FTP 用户详细信息一起存储在文件系统中。由于 PHP 的临时文件夹归服务器根目录所有,所以我的 UID 不匹配,即临时上传文件归根目录所有,而试图移动它的上传脚本归 FTP 用户所有。把它弄坏了。
为了解决这个问题,我将uploadify php 脚本的所有权更改为root 并从那里开始工作。
我对服务器端编码知之甚少,因为我更像是一个前端人员。如何更改权限?我正在使用 1&1 托管。
这是 FileZilla 中服务器上文件的截图:
编辑
我尝试上传一个 ZIP 文件,它说上传成功但没有上传。但是,我想知道我的脚本是否有错误,因为由于 PHP 脚本中的这一行,我不应该被允许上传 ZIP 文件:
// Validate the file type
$fileTypes = array('jpg','jpeg','gif','png'); // File extensions
脚本不应该拒绝 zip 文件吗?
下面是我正在使用的代码,以防脚本出现错误,而不是我的服务器:
JS
$(function() {
$('#file_upload').uploadify({
'swf' : 'uploadify.swf',
'uploader' : 'uploadify.php',
'onUploadSuccess' : function(file, data, response) {
alert('The file ' + file.name + ' was successfully uploaded with a response of ' + response + ':' + data);
}
});
});
PHP
<?php
$targetFolder = '/uploads/'; // Relative to the root
$verifyToken = md5('unique_salt' . $_POST['timestamp']);
if (!empty($_FILES) && $_POST['token'] == $verifyToken) {
$tempFile = $_FILES['Filedata']['tmp_name'];
$targetPath = $_SERVER['DOCUMENT_ROOT'] . $targetFolder;
$targetFile = rtrim($targetPath,'/') . '/' . $_FILES['Filedata']['name'];
// Validate the file type
$fileTypes = array('jpg','jpeg','gif','png'); // File extensions
$fileParts = pathinfo($_FILES['Filedata']['name']);
if (in_array($fileParts['extension'],$fileTypes)) {
move_uploaded_file($tempFile,$targetFile);
echo '1';
} else {
echo 'Invalid file type.';
}
}
?>
【问题讨论】:
-
尝试使用 FTP 客户端将
chmod上传文件夹(“上传”)到777或755。 -
您也可以尝试将文件夹的所有者和组更改为与您的网络服务器软件相同的所有者和组... FileZilla 和其他 FTP 软件可以显示您当前在其他服务器上使用的所有者/组构成您的环境的文件/文件夹
-
@SetSailMedia - 感谢您的信息。我尝试使用 FileZilla 更改它,但仍然没有文件。我附上了 FileZilla 在我的问题中显示的屏幕截图。
-
@SetSailMedia - 我相信你可能是对的。我没有收到 1。
-
@SetSailMedia - 美丽!直到今天我才有机会尝试这个,它奏效了!谢谢!请将此作为答案发布,以便我接受。 =>
标签: javascript php jquery uploadify directory-permissions