Redsun
Redsun

Reputation: 33

Uploading image to FTP using PHP

I have tried files upload to server using ftp connection in php and its not working, its connecting but getting Error like "Connected to XXXXXXXXXXX, for user XXXXXXXXXXXXX FTP upload has failed!" I have tried following code please help by correcting it,..

image.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Welcome</title>
</head>

<body>
<form action="upload.php" enctype="multipart/form-data" method="post">
<input name="file" type="file" />
<input name="submit" type="submit" value="Upload File" />
</form>
</body>
</html>

upload.php

<?php
$ftp_server = "XXXXXX"; 
$ftp_user_name = "XXXXXXX"; 
$ftp_user_pass = "XXXXXXXX";  
$destination_file = "imagetest/123/".$_FILES['file']['name'];
$source_file = $_FILES['file']['tmp_name'];  

// set up basic connection
$conn_id = ftp_connect($ftp_server);
ftp_pasv($conn_id, true); 

// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); 

// check connection
if ((!$conn_id) || (!$login_result)) { 
    echo "FTP connection has failed!";
    echo "Attempted to connect to $ftp_server for user $ftp_user_name"; 
    exit; 
} else {
    echo "Connected to $ftp_server, for user $ftp_user_name";
}

// upload the file
$upload = ftp_put($conn_id, $destination_file, $source_file, FTP_BINARY); 

// check upload status
if (!$upload) { 
echo "FTP upload has failed!";
} else {
echo "Uploaded $source_file to $ftp_server as $destination_file";
}

// close the FTP stream 
ftp_close($conn_id);
?>

Upvotes: 0

Views: 1920

Answers (1)

Funk Forty Niner
Funk Forty Niner

Reputation: 74217

I've tested your code and had a bit of a hard time to get it working, but what worked for me was to use something like /http_docs, or /public_html as the base/root folder.

  • Root folder names will vary from hosting services, so modify accordingly.

I.e. and with a few modifications:

<?php
$ftp_server = "XXXXXX"; 
$ftp_user_name = "XXXXXXX"; 
$ftp_user_pass = "XXXXXXXX"; 

$folder = "/http_docs/imagetest/123/";

$destination_file = $folder . $_FILES['file']['name'];

$source_file = $_FILES['file']['tmp_name'];

// rest of code

Sidenote:

Do not use a full path name.

I.e.: /var/user/you/public_html/ it won't work.

Upvotes: 2

Related Questions