Reputation: 31417
$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.';
}
}
?>
Same code is working on my local machine, but deployed on remote server. Then getting below error.
/home/username/public_html/LP/media/image/default_avatar.png
Warning: move_uploaded_file(/home/username/public_html/LP/media/image/default_avatar.png): failed to open stream: No such file or directory in /home/username/public_html/uploadify/gallery.php on line 28Warning: move_uploaded_file(): Unable to move '/tmp/phpoe0fBd' to '/home/username/public_html/LP/media/image/default_avatar.png' in /home/username/public_html/uploadify/gallery.php on line 28
Upvotes: 0
Views: 6495
Reputation: 1
whom still have this problem after tried all solutions suggested here.. they have to try this small thing is to respect the letter sensitive case of the name of folders.. folder "Upload" <> "upload".. thx
Upvotes: 0
Reputation: 3702
Try the following code. It should be easy to identify the error:
<?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;
}
Upvotes: 0
Reputation: 2129
I have this little function (not the best) but it "works" in my case the uploaded files must be moved or they get deleted, so I move them to a folder next to my PHP file and echo a link to it (you can them move it any where else, rename it or whatever:
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>";
}
}
The important part about it is this if:
if(is_readable($gs_name) && $_FILES['uploaded_files']['error'] == 0)
it allow it to check if the file can be copied and if there were no errors that could leave the file damage... I point at this because the path seems to be ok, other already mention the file and folder permissions.
Upvotes: 0
Reputation: 97
The code you provide isn't very clear to tell the source of the problem, so I will provide you with a full snippet where you can take better conclusions.
In this case, I sent an array from JavaScript to my PHP file using a formdata under the name "documents". I also modify the name of the file so it becomes: "filename_optional_$i(int)".
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.';
}
}
Make sure your path variables are pointing to the correct folder. Say, for instance, if you want your file to go to the foldier images, you have to do:
path_to_folder/images/ and not path_to_folder/images
EDIT:
Here's how your filename and directory path variables should look like:
/*$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);
I'm quite new to this site, but the least I can do for you is offer you this code I've done to help you out. I've written some comments to guide you through.
Upvotes: 0