PHP ftp_put warning filename cannot be empty - php

I have a home FTP server. I made a little file uploader for that.
index.php:
<html>
<body>
<form enctype="multipart/form-data" action="upload_file.php" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="100000" />
Choose a file to upload: <input name="uploadedfile" type="file" /><br />
<input type="submit" value="Upload File" />
</form>
</body>
</html>
upload_file.php:
<?php
$ftp_server = "192.168.0.11";
$ftp_username = "";
$ftp_password = "";
// setup of connection
$conn_id = ftp_connect($ftp_server) or die("Pogreska tijekom spajanja.");
// login
if (#ftp_login($conn_id, $ftp_username, $ftp_password))
{
echo "Spojen kao $ftp_username#$ftp_server\n";
}
else
{
echo "Pogreska tijekom spajanja $ftp_username\n";
}
$file = $_FILES["uploadedfile"]["name"];
$remote_file_path = "/KUCNI_FTP-506D-ADD5/".$file;
ftp_put($conn_id, $remote_file_path, $_FILES["uploadedfile"]["tmp_name"], FTP_ASCII);
echo "\n\nconnection closed";
?>
And I get this error:
Warning: ftp_put(): Filename cannot be empty in C:\xampp\htdocs\ftp\upload_file.php on line 22
I tried to fix it, but it is not working. Please help me.
EDIT(And sorry for a little bit of Croatian...)

Have a look at MAX_FILE_SIZE, that's an option which is often ignored.
Make sure the file you're trying to upload is within the limits of what you previously defined.

Related

Can't upload file (random tmp path)

I'm using lampp 7.2.5 & also tried on server with php 7.1. I'm trying to create a file hosting website but there is only 1 error. I couldn't find any solution for it so I'm asking for help now. I have a PHP code like this:
$ftp_server = xxxxxxxxxxxxxx;
$ftp_username = xxxxxxxxxxxxxxxxxxxxxxx;
$ftp_userpass = xxxxxxxxx;
$ftp_conn = ftp_connect($ftp_server) or die("Could not connect to $ftp_server");
$login = ftp_login($ftp_conn, $ftp_username, $ftp_userpass);
$file = $_FILES['file']['tmp_name'];
$file_name = $_FILES['file']['name'];
$remote_file = "/uploaded/".$file_name;
if (ftp_put($ftp_conn, $remote_file, $file, FTP_ASCII))
{
echo "Successfully uploaded $file.";
}
else
{
echo "Error uploading $file.";
}
ftp_close($ftp_conn);
And HTML:
<form action="sent.php" method="post" enctype="multipart/form-data">
<input type="file" id="file" name="file" class="inputfile" onchange="danee()">
<label for="file" class="chose" id="chose">Wybierz plik</label>
<div id="info">
<input type="email" name="email" id="email" onchange="checkEmail()" autocomplete="email" class="userdata" placeholder="E-mail"><Br/>
<input type="password" name="pass" id="pass" onchange="checkPass()" autocomplete="new-password" class="userdata" placeholder="Hasło do pliku"><Br/>
<input type="submit" value="Wyślij" id="send">
</div>
</form>
And the problem is when I reload the browser and try to send any file, there shows that error:
Warning: ftp_put(): Can't open that file: No such file or directory in /opt/lampp/htdocs/host/sent.php on line 10
Error uploading /opt/lampp/temp/phpgQoyn9.
And there always shows "/opt/lampp/temp/php[and some random characters]
Can someone help me? Pleaseee
You are upload image in directory. And then execute other process.
move_uploaded_file($file, $remote_file)
if (move_uploaded_file($file, $remote_file) && ftp_put($ftp_conn, $remote_file, $file, FTP_ASCII))
{
echo "Successfully uploaded $file.";
}
else
{
echo "Error uploading $file.";
}
ftp_close($ftp_conn);

file uploading using ftp_put [duplicate]

This question already has an answer here:
PHP Warning: ftp_fput(): Can't open that file: Is a directory in
(1 answer)
Closed 2 years ago.
I have solved my original question below. What is the best method if I need to insert a progress bar for the file uploader? Using the ftp_put method, doesn't allow to get a response from the server until the file is successfully uploaded.
Thanks!
I'm trying to upload a file using ftp_put and for some reason when I run the code through localhost, it gives me the below error:
Warning: ftp_put(): Can't open that file: Is a directory in C:\xampp\htdocs\ftp\upload_file.php on line 25
<form action="upload_file.php" enctype="multipart/form-data" method="post">
<input name="uploadedfile" type="file" />
<input name="submit" type="submit" value="Upload File" />
</form>
PHP Code:
<?php
$ftp_server = "";
$ftp_user_name = "";
$ftp_user_pass = "";
$destination_file = "/public_html/testing/";
$source_file = $_FILES['uploadedfile']['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);
?>
Thank you.
Please test chdir that destination or look at this on php.net
Got this cryptic error
Warning: ftp_put() [function.ftp-put]: 'STOR' not understood in
C:\wamp\www\kevtest\ftp_todays.php on line 48
Found the prob, you can't put a path to the destination file
(even though I can do that in the dos ftp client...?)
e.g. - this doesn't work
ftp_put($conn, '/www/site/file.html','c:/wamp/www/site/file.html',FTP_BINARY);
you have to put
<?php
ftp_chdir($conn, '/www/site/');
ftp_put($conn,'file.html', 'c:/wamp/www/site/file.html', FTP_BINARY );
?>
<?php
if(isset($_POST['submit']))
{
ini_set('max_execution_time', 60000);
$file = $_FILES['video']['tmp_name'];
$destination_file = "/public_html/".time().basename($_FILES['video']['name']);
// connect and login to FTP server
$ftp_server = ".com";
$ftp_conn = ftp_connect($ftp_server) or die("Could not connect to $ftp_server");
$login = ftp_login($ftp_conn, 'name', 'pass');
// upload file
if (ftp_put($ftp_conn, $destination_file, $file, FTP_BINARY))
{ echo "Successfully uploaded ".$_FILES['video']['name']." "; }
else
{ echo "Error uploading $file."; }
// close connection
ftp_close($ftp_conn);
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<body>
<div class="container">
<form name="frm" id="frm" method="post" enctype="multipart/form-data">
<div class="input-group">
<input type="file" name="video" required="required" />
</div>
<div class="input-group">
<input type="submit" name="submit" value="Submit" onClick="move()"/>
</div>
</form>
</div>
</body>
</html>

PHP - Upload images to FTP directory and then Display images uploaded only from directory - 2

While trying to upload image and display it, i'm getting the 'Failed moving the uploaded file'. Don't know where I'm going wrong..
Here's my image.php:
<form enctype="multipart/form-data" action="upload.php" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="100000" />
Choose a file to upload: <input name="uploadedfile_1" type="file" /><br />
<input type="submit" value="Upload File" />
</form>
Here's my upload.php:
<?php
$ftp_server = "localhost";
$ftp_username = "xxx";
$ftp_password = "xxx";
$conn_id = ftp_connect($ftp_server) or die("could not connect to $ftp_server");
if(#ftp_login($conn_id, $ftp_username, $ftp_password))
{
echo "connected as $ftp_username#$ftp_server\n";
}
else {
echo "could not connect as $ftp_username\n";
}
$remote_file_path = "/2013/img/" . $_FILES['uploadedfile_1']['name'];
if ( $_FILES['uploadedfile_1']['error'] )
die( "Upload failed with error code " . $_FILES['uploadedfile_1']['error'] );
$new_path = '/2013/img/tmp/' . $_FILES['uploadedfile_1']['name'];
if ( ! move_uploaded_file( $_FILES['uploadedfile_1']['tmp_name'], $new_path ) ) {
die( "Failed moving the uploaded file" );
}
ftp_put($conn_id, $remote_file_path, $new_path,FTP_BINARY);
echo "<img src='$new_path' alt='Your uploaded file' />";
?>
Any help would be much appreciated.
There is a problem with your folder where you try to put the image
try this see if it works
if ( ! move_uploaded_file( $_FILES['uploadedfile_1']['tmp_name'], 'D:/'.$_FILES['uploadedfile_1']['name']

FTP upload via PHP form

I want to upload a file via FTP upload in a form.
<html>
<body>
<form enctype="multipart/form-data" action="upload_file.php" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="100000" />
Choose a file to upload: <input name="uploadedfile" type="file" /><br />
<input type="submit" value="Upload File" />
</form>
</body>
</html>
Here is the PHP file:
<?php
$ftp_server = "xxx";
$ftp_username = "xxx";
$ftp_password = "xxx";
// setup of connection
$conn_id = ftp_connect($ftp_server) or die("could not connect to $ftp_server");
// login
if (#ftp_login($conn_id, $ftp_username, $ftp_password))
{
echo "conectd as $ftp_username#$ftp_server\n";
}
else
{
echo "could not connect as $ftp_username\n";
}
$file = $_FILES["file"]["name"];
$remote_file_path = "/home/www/lifestyle69/import/".$file;
ftp_put($conn_id, $remote_file_path, $file, FTP_ASCII);
ftp_close($conn_id);
echo "\n\nconnection closed";
?>
The FTP connection connects successfully but the file is nowhere.
Can anybody help me?
Thanks!
Because you have <input name="uploadedfile" type="file" />:
$file = $_FILES["file"]["name"]; // wrong
$file = $_FILES["uploadedfile"]["name"]; // right
Because you need the filename of the temporary copy stored by PHP, which exists on the server:
ftp_put($conn_id, $remote_file_path, $file, FTP_ASCII); // wrong
ftp_put($conn_id, $remote_file_path, $_FILES["uploadedfile"]["tmp_name"],
FTP_ASCII); // right
Refer to the PHP documentation for more information about $_FILES.
Are you sure that the folder you are uploading to has the correct permissions? Try chmoding it to 777 and see if that works.
The file is stored on server with temporary name, so when you try uploading $_FILES['file']['name'], it fails, because file with such name does not exist. Instead you should call ftp_put() with $_FILES['file']['tmp_name']
It's explained a little better here

how to add many images to a mysql database?

i have a form which is able to upload multiple selected files to the folder. I just need to find how how to insert them into the database using PHP?
HTML form
<form name="demoFiler" id="demoFiler" enctype="multipart/form-data">
<input type="file" name="multiUpload" id="multiUpload" multiple />
<input type="submit" name="submitHandler" id="submitHandler" value="Upload" class="buttonUpload" />
</form>
PHP code
if($_SERVER['REQUEST_METHOD'] == "POST"){
if(move_uploaded_file($_FILES['file']['tmp_name'], "uploads/".$_FILES['file']['name'])){
echo($_POST['index']);
}
exit;
}
This is my code and first of all I can't get the files to be moved to the upload folder:
<?php
$username = "root";
$password = "";
$host = "localhost";
$database = "db_holiday";
// Make the connect to MySQL or die
// and display an error.
$link = mysql_connect($host, $username, $password);
if (!$link) {
die('Could not connect: ' . mysql_error());
}
// Select your database
mysql_select_db ($database);
if($_SERVER['REQUEST_METHOD']=="POST")
{
foreach ($_FILES['multiUpload']['name'] as $fileName) {
$uploaddir= '/upload/';
$uploadfile = $uploaddir . basename($fileName);
if (move_uploaded_file($fileName, $uploadfile)) {
echo "File is valid, and was successfully uploaded.\n";
} else {
echo "Possible file upload attack!\n";
}
}
}
?>
<form action="" method="POST" enctype="multipart/form-data">
<input type="file" name="multiUpload[]" id="multiUpload" multiple="multiple" />
<input type="submit" name="button"/>
</form>
HTML:
<input type="file" name="multiUpload[]" id="multiUpload" multiple />
php:
foreach ($_FILES['multiUpload'] as $fileName) {
//write your code here
//$fileName
}
Use 2 input type="file" elements
<input type="file" name="img_1" />
<input type="file" name="img_2" />
Access each file using
$_FILES['img_1'][];
$_FILES['img_2'][];
Or you can also use an array like
<input type="file" name="img[]" />
<input type="file" name="img[]" />
<!--Which is often used in checkboxes-->
And access each image using
$_FILES['img']['tmp_name'][0];
$_FILES['img']['tmp_name'][1];

Categories