サイトにアップロードを実装しようとしています。
ファイルがアップロードされたと表示されますが、アップロード フォルダを調べても何もありません。
これに似た他の投稿を読んだことがありますが、運が悪いです。
別の質問に対するこの回答を読みました:
Linux マシンでも同様の問題がありました。私のサーバーのPHP構成はcuplritであることが判明しました。PHP は SAFE MODE で実行されていました。Uploadify スクリプトを FTP 経由でアップロードしたため、スクリプト ファイルは FTP ユーザーの詳細と共にファイル システムに保存されました。PHP の一時フォルダーはサーバー ルートが所有していたため、UID の不一致がありました。つまり、一時アップロード ファイルはルートに属していましたが、それを移動しようとしたアップロード スクリプトは FTP ユーザーが所有していました。それはそれを粉砕しました。
これを解決するために、uploadify php スクリプトの所有権をルートに変更し、そこから機能しました。
私はフロントエンドの方なので、サーバー側のコーディングについてはほとんど知りません。権限を変更するにはどうすればよいですか? 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.';
}
}
?>