09-23-2012, 12:21 PM
[eluser]Dandy_andy[/eluser]
I’m hoping someone can help me here as I’m pretty desperate now. Having tested my website on my localhost with no issues whatsoever, I have a photo upload function which doesn’t work now the site is on a remote web-server and judging by the searches I have done, this appears to be fairly common but I am very stuck. When someone tries to upload a photo, the error ‘The upload path does not appear to be valid’ is returned and I can’t figure out why. My suspicion is that the ‘MKDIR’ path isn’t correct relative to where the codeigniter upload function is trying to place the file. But I don’t understand why these scripts worked fine on my local host.
The structure of my site is as follows and I am trying to create subfolders in the main folder ‘PHOTOS’ to upload to:-
HTTPDOCS/
APPLICATION
SYSTEM
PHOTOS
Part of my model file (functions used to generate a random string to set the file path and the subdirectory structure):-
And this relates to the controller (relevant part shown only):-
Can anyone help??? I've been trawling through pages and pages of people having a similar issue, but can't seem to solve this one.
Thanks.
I’m hoping someone can help me here as I’m pretty desperate now. Having tested my website on my localhost with no issues whatsoever, I have a photo upload function which doesn’t work now the site is on a remote web-server and judging by the searches I have done, this appears to be fairly common but I am very stuck. When someone tries to upload a photo, the error ‘The upload path does not appear to be valid’ is returned and I can’t figure out why. My suspicion is that the ‘MKDIR’ path isn’t correct relative to where the codeigniter upload function is trying to place the file. But I don’t understand why these scripts worked fine on my local host.
The structure of my site is as follows and I am trying to create subfolders in the main folder ‘PHOTOS’ to upload to:-
HTTPDOCS/
APPLICATION
SYSTEM
PHOTOS
Part of my model file (functions used to generate a random string to set the file path and the subdirectory structure):-
Code:
class Image_file extends CI_Model {
//generate random string for filename and path
public function string_generate() {
$chars = "abcdefghijklmnopqrstuvwxyz0123456789";
$size = strlen($chars);
$string = '';
for ($i = 0; $i < 15; $i++) {
$string .= $chars[rand(0, $size - 1)];
}
return $string;
}
//set image path (generate random code which will also form filename)
public function set_image_path($string) {
$pos = 6;
$f = substr($string, 0, $pos);
$first = chunk_split($f,2,"/");
$photo_path = 'photos/'.$first;
return $photo_path;
}
And this relates to the controller (relevant part shown only):-
Code:
//upload photo file
public function upload_file() {
$mem_id = $this->session->userdata('mem_id');
$this->load->model('image_file');
$string = $this->image_file->string_generate();
$set_image_path = $this->image_file->set_image_path($string);
//check if image exists in directory with same string (unlikely but better safe than sorry!)
if (file_exists($set_image_path.$string.'.jpeg')) {$string .= substr($this->session->userdata('username'), 0, 4);}
//echo '<br /><br /><br /><br /><br /><br /><br /><br />'.$set_image_path; exit();
$config['upload_path'] = $set_image_path;
$config['allowed_types'] = 'gif|jpg|jpeg|png';
$config['max_size'] = '4000';
$config['max_width'] = '6000';
$config['max_height'] = '4000';
$config['file_name'] = $string.'.jpeg';
$this->load->library('upload', $config);
//create the directory
mkdir($set_image_path, 0644, true);
//do upload & process image (rezize and rename)
$this->upload->do_upload('userphoto');
$results = $this->upload->data();
$error = $this->upload->display_errors('', '');
if (($error) or (!$this->image_file->check_file_exists($set_image_path.$string.'.jpeg'))) {
$this->session->set_flashdata('error', $error);
redirect('user/upload_photo');
}
//write the data to the photo db
$this->image_file->write_imagedata($mem_id, $string, $set_image_path);
//load image library
$this->load->library('image_lib');
Can anyone help??? I've been trawling through pages and pages of people having a similar issue, but can't seem to solve this one.
Thanks.