我正在尝试在网站上实施uploadify。
它说文件已上传,但当我查看上传文件夹时,没有任何内容。
我已经阅读了与此类似的其他帖子,但没有运气。
我确实读过另一个问题this answer:
我在Linux机器上遇到过类似的问题。事实证明,我的服务器上的PHP配置是杯子。 PHP在SAFE MODE中运行。由于我通过FTP上传了Uploadify脚本,因此脚本文件以我的FTP用户详细信息存储在文件系统中。由于PHP的临时文件夹归服务器根所有,我的UID不匹配,即临时上传文件归属于root,而试图移动它的上传脚本归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.';
}
}
?>
答案 0 :(得分:2)
看起来令牌验证码就是问题所在。如果删除该功能,则上传应通过:)
您可以通过评论删除if()
比较吗?
if (!empty($_FILES) && $_POST['token'] == $verifyToken) {
行更改为:
if (!empty($_FILES) /* && $_POST['token'] == $verifyToken */) {
答案 1 :(得分:0)
似乎$ fileTypes在我的Linux PHP安装上区分大小写。 'image.jpg'上传但'image.JPG'没有上传。
更改
$fileTypes = array('jpg','jpeg','gif','png');
要
$fileTypes = array('jpg','JPG','jpeg','JPEG','gif','GIF','png','PNG');