$targetFolder = '/LP/media/image'; // Relative to the root
if (!empty($_FILES)) {
$tmpName = $_FILES['Filedata']['tmp_name'];
$targetPath = $_SERVER['DOCUMENT_ROOT'] . $targetFolder;
//$ext = end(explode('.', $_FILES['Filedata']['name']));
$targetFile = rtrim($targetPath, '/') . '/' . $_FILES['Filedata']['name'];
// Validate the file type
echo $targetFile;
$fileParts = pathinfo($_FILES['Filedata']['name']);
$fileTypes = array('jpg', 'jpeg', 'png','JPG','JPEG','PNG'); // File extensions
if (in_array($fileParts['extension'], $fileTypes)) {
move_uploaded_file($tmpName, $targetFile);
//echo '1'.$fileParts['filename'];
// echo $fileParts['filename'];
$aimage = file_get_contents($tmpName);
// echo '<img src="data:image/jpeg;base64,' . base64_encode($aimage) . '" width=\'100\' height=\'100\' />';
} else {
echo 'Invalid file type.';
}
}
?>
相同的代码在我的本地计算机上运行,但部署在远程服务器上。然后低于错误。
/home/username/public_html/LP/media/image/default_avatar.png
警告:move_uploaded_file(/home/username/public_html/LP/media/image/default_avatar.png):无法打开流: / home / username / public_html /中没有此类文件或目录uploadify / gallery.php 在线 28
警告:move_uploaded_file():无法将'/ tmp / phpoe0fBd'移动到 / home中的'/home/username/public_html/LP/media/image/default_avatar.png' / username/public_html/uploadify/gallery.php 在线 28
答案 0 :(得分:0)
您提供的代码并不清楚告诉问题的根源,因此我将为您提供一个完整的代码段,您可以从中获得更好的结论。
在这种情况下,我使用一个名为&#34; documents&#34;的formdata从JavaScript发送一个数组到我的PHP文件。我还修改了文件的名称,使其成为:&#34; filename_optional_ $ i(int)&#34;。
for($i=0; $i<count($_FILES['documents']['name']); $i++){
list($dump, $extention) = explode(".", (string)$_FILES['documents']['name'][$i]);
$document_name = $file_name.'_optionnel'.$i;
if(($_FILES['documents']['size'][$i] < 500000)){
if ($_FILES['documents']["error"][$i] > 0){
echo 'Erreur.';
}else{
if(file_exists( $directory_path . $document_name . "." . $extention)) {
echo 'Le fichier existe déjà.';
}else{
$sourcePath = $_FILES['documents']['tmp_name'][$i];
$targetPath = $directory_path . $file_name ."/". $document_name . "." . $extention;
array_push($attachments, $targetPath);
move_uploaded_file($sourcePath, $targetPath);
}
}
}else{
echo 'Le fichier est trop grand.';
}
}
确保您的路径变量指向正确的文件夹。比如说,如果您希望文件转到折叠图像,则必须执行以下操作:
path_to_folder / images / 而不是 path_to_folder / images
编辑:
以下是文件名和目录路径变量的样子:
/*$nom, $prenom and $user_id come from database values*/
$file_name = $nom."_".$prenom."_".$user_id;
$directory_path = dirname( __FILE__ ) . '/user_docs/';
/* Create mask */
$oldmask = umask(0);
/* Create the folder for user */
$directory = mkdir($directory_path.$file_name, 0777);
/* redo the mask */
umask($oldmask);
我对这个网站很陌生,但我能为您做的最少的事情就是为您提供此代码以帮助您解决问题。我已经写了一些评论来指导你完成。
答案 1 :(得分:0)
我有这个小功能(不是最好的)但它“工作”在我的情况下必须移动上传的文件或它们被删除,所以我将它们移动到我的PHP文件旁边的文件夹并回显链接到它(你可以把它移到任何其他地方,重命名或其他:
function save_file() {
$gs_name = $_FILES['uploaded_files']['tmp_name'];
if(is_readable($gs_name) && $_FILES['uploaded_files']['error'] == 0) { //Tells whether a file exists and is readable. no error during upload (0)
move_uploaded_file($gs_name, 'upload/'.$_FILES['uploaded_files']['name']);
echo "saved.<a href='upload/".$_FILES['uploaded_files']['name']."' target='_blank'/>".$_FILES['uploaded_files']['name']."</a><br/>";
echo "<p><a href='upload/' target='_self'>Uploaded files.</a></p>";
echo "<p><a href='upload_file.php' target='_self'>Continue...</a></p>";
}
}
关于它的重要部分是:
if(is_readable($gs_name) && $_FILES['uploaded_files']['error'] == 0)
它允许它检查文件是否可以被复制,如果没有可能导致文件损坏的错误...我指向这个因为路径似乎没问题,其他已经提到文件和文件夹权限。
答案 2 :(得分:0)
尝试以下代码。识别错误应该很容易:
<?php
$upload_dir = $_SERVER['DOCUMENT_ROOT'] . '/LP/media/image';
if (isset($_FILES['Filedata'])) {
$file = $_FILES['Filedata'];
if ($file['error'] !== UPLOAD_ERR_OK) {
echo 'error: ', $file['error'], PHP_EOL;
exit;
}
$allowed = array('jpg', 'jpeg', 'png');
$extension = strtolower(pathinfo($file['name'], PATHINFO_EXTENSION));
if (!in_array($extension, $allowed)) {
echo 'error: invalid file extension', PHP_EOL;
exit;
}
$target = $upload_dir . '/' . basename($file['name']);
if (!move_uploaded_file($file['tmp_name'], $target)) {
echo 'error: move_uploaded_file failed', PHP_EOL;
print_r(error_get_last());
exit;
}
echo 'success', PHP_EOL;
echo $target, PHP_EOL;
}