I am currently having problems with testing a known working file upload script while migrating a site to a new server.
I have migrated the entire site to the new server and everything works as it should apart from the original file upload script. I have not pointed the domain names to the new server as yet, accessing it through changing my hosts file on my local machine.
Before writing a simple upload test script, could there be any reason I am missing that is preventing my file uploads from working - for example, security issues?
Is it likely that the file upload directory location is pointing to the original server?
Please, put all the files in the content folder directly to the public directory of the live server.
E.g: Select all in the content folder and paste it directly on the public folder.
Related
This is what I have done so far.
Configured Filezilla FTP server on localhost.
And added user: Admin with shared folder C://ftp
there is a file inside that folder 123.jpg
So when I try to Download it using ftp class in Codeigniter;
Unable to download the specified file. Please check your path.
this is the code I'm using to download. FTP successfully connects but fails download due to incorrect file path.
$this->ftp->download('/123.jpg', 'D:/');
What should be changed in the above code?
Well, D:/ definitely dose not seems to be a path that is wrong. As for the doubt goes in the file you trying to download.
You can debug with the same - connect the ftp server using a ftp client, see the files / folders in list. There you can confirm as whether or not the file exists directly in path or not.
Solved it !
Seemed that local file path need to have the 'file name' at the end as well.
$this->ftp->download('/123.jpg', 'D:/blah.jpg');
And file would be downloaded to D: renamed as blah.jpg
I have searched everywhere but didn't got a perfect answer.
I am using WAMP to run PHP on local machine. I have an tag to accept file from local machine and have to upload this to FTP server.
My code is working perfectly fine but only if file is present directly on base path i.e. /wamp/www/ but if I pick file from desktop to upload, it didn't actually pass path of file to action php file instead just pass on file name.
Is there a way to achieve this functionality?
Thanks
Saransh
I am trying to upload image to my Codeigniter application hosted on Openshift. My app structure is as follows
App
-libs
-...
-php
- application
- public
- uploads
I want to upload images to this uploads folder. my code
$config['upload_path']=realpath(dirname(__FILE__)).'public/uploads/';
$config['allowed_types']="jpg|jpeg|gif|png";
$this->load->library('upload',$config);
if(!($this->upload->do_upload())){
$error=array('error'=>$this->upload->display_errors());
$this->load->view('profile',$error);
}
else{
$file_data=$this->upload->data();
$data['img']=base_url().'/public/uploads/'.$file_data['file_name'];
$this->load->view('success',$data);
}
But above gives me The upload path does not appear to be valid. error. I have tried several ways. But the problem is the server do not allow to upload to the location.
Normally I can access the files in the uploads folder. But when I try to write data (store file) it doesn't allow. How can I fix this thing.
Note: I want the solution for the Openshift server but not the localhost
The path is supposed to be $OPENSHIFT_DATA_DIR (which points to ~/app_root/data).
You can also write to /tmp but those files will be treated as ephemeral.
You do not have write permissions anywhere in the file system.
I am using php and i have written codes to allow a user upload a file. For testing purposes, i have saved the file to D:/final/temp/test.xls. Then i generate another file and save it to the same location. This file can be downloaded by the user.
But if an actual user would be using my application,
where should the location point to? Thanks!
You need to upload the file to a directory which is being served by your web server. You have 3 options:
Find the directory where your PHP files are being served and save the files to that location, or a directory underneath.
In your web server config, map the D:/final/temp/ directory to a website or virtual directory.
Create a PHP file that reads the file from the D:/final/temp directory and serves it to the end user. This option is trickier to setup and has more gotchas in terms of performance.
The location which you upload to needs to have write permissions, and the web server also needs to be able to read files from this location.
I have a PHP web-application that allows users to upload images to my web site. I'm doing this using a simply HTML <form enctype="multipart/form-data">
However, instead of having those images uploaded to my web server - I would to have those images uploaded directly to my CDN (Cachefly - which is another server).
Is this possible ... to have a web-application allow a user to upload images directly to another server?
In case it helps, here's my PHP code:
$target_path = "/home/www/example.com/uploads/";
$target_path = $target_path . basename( $_FILES['uploadedfile']['name']);
if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) {
// file has been uploaded **LOCALLY**
// HOWEVER, instead of it being upload locally, I would like the file
// to be directly uploaded to the CDN ('other' server)
...
} else{
// error: file did not get uploaded correctly
....
}
i think in case of a CDN ... u will first have to receive files on ur server and then using the CDN API upload to their 'bucket'. i dont think u can upload directly to a CDN unless there is a way to map it as a directory on ur server.
Moving / Uploading a file to a service or for you non-direct-accesable server is usually done by using the provider's API
Moving / Uploading a file to a server 'owned' by yourself can be done by using PHP + FTP extensions (for more information: pear.php.net or pecl.php.net)
Moving / Uploading a file to a server 'owned' by yourself and being one of many in a cluster is usually done by uploading the file temporary on 1 server and afterwards a .sh, .bash or whatever is called which activates further transfer processes to another server.
I don't think it's possible to directly upload to another server, but I could be wrong. I had a similar problem, and I used PHP's FTP capabilities (http://us3.php.net/manual/en/book.ftp.php). I still used my server as a middle-man, meaning I uploaded the files to my server, then FTP transferred them to the target server, and then deleted the file from my server.
You could recieve it on your webserver and then transfer it to the CDN via fileshare or FTP.
If the CDN is web-facing, you could re-direct the request to that server and send control back to your webserver form once the file is uploaded. It's probably better to do the file transfer in the back end though and keep the user connected to the web server.
Sure.
Somewhere in your code there is a "$target_directory" variable that needs to be set. It won't be called that, but depeding on how your function is set up it needs to be there -somewhere-. Just use an absolute path for the directory you want the files to land in. Also, make sure that directory is CHMOD'd to 777 so it can be written into.
Post your code and I can help more.
Yes amazon web services already allows you to upload to amazon S3 directly from the user's browser:
Documentation: http://doc.s3.amazonaws.com/proposals/post.html
Additionally that S3 bucket can be exposed via the amazon CDN (or any other cdn that can point to a customer's origin server)