我有一个带有html浏览类型和提交按钮的表单。我使用浏览按钮选择了一个文件并提交表单。在表单提交后,将调用代码。
$conn_id="myid";
$conn_id = ftp_connect ( 'server' );
$ftp_user_name="username";
$ftp_user_pass="password";
// 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!" ;
exit;
} else {
echo "Connected to for user $ftp_user_name" ;
}
// upload the file
$upload = ftp_put( $conn_id, "images/signatures/" . $fileName , $_FILES['tmp_name'] , FTP_BINARY );
// check upload status
if(!$upload){
echo "FTP upload has failed!" ;
} else {
echo "Successfully Uploaded." ;
}
但它会产生以下警告:
Warning: ftp_put(): Filename cannot be empty in /var/www/echdp/_ProviderSignature.php on line 70 FTP upload has failed!
但是当我在上面的代码中硬编码源路径时,它会在服务器上传文件:
$upload = ftp_put( $conn_id, "images/signatures/myfile.txt" , "/var/www/images/hello.txt" , FTP_BINARY );
答案 0 :(得分:3)
试试这个:
$file = 'somefile.txt';
$remote_file = '/public_html/dir/dir2/dir3/somefile.txt';
$ftp_server = "yourdomain.in";
$ftp_user_name = "ftpusername";
$ftp_user_pass = "ftppassword";
// set up basic connection
$conn_id = ftp_connect($ftp_server);
// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
// upload a file
if (ftp_put($conn_id, $remote_file, $file, FTP_ASCII)) {
echo "successfully uploaded $file\n";
} else {
echo "There was a problem while uploading $file\n";
}
// close the connection
ftp_close($conn_id);
您的文件将上传到您域名的/public_html/dir/dir2/dir3/
目录中
警告:在测试此功能时,切勿上传索引文件
资料来源:PHP.net
答案 1 :(得分:2)
带有enctype的html代码示例:
<form action="upload_file.php" method="post" enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="myfile" id="file" />
<br />
<input type="submit" name="submit" value="Submit" />
</form>
enctype
代码中有Form
吗?没有该属性,您的文件将不会被发送。
用于调试$ _FILES数组。尝试
var_dump($_FILES);
查看数据是否正确。
你的变量:
$_FILES['tmp_name']
被错误地使用,因为$ _FILES包含的文件不是一个文件。因此你应该写:
$_FILES['your-name-in-html-form']['tmp_name'] // your-name-in-html-form = myfile in the example above
查看示例:http://www.zymic.com/tutorials/php/creating-a-file-upload-form-with-php/
答案 2 :(得分:2)
$_FILES['tmp_name']
不是您文件的名称。它存储在:
$_FILES['inputname']['tmp_name']
其中inputname是您的字段的名称。另请检查表单中的enctype =“multipart / form-data”。
请注意简单地在服务器上放置用户可以发送的所有内容 - 如果可以通过http访问上传的文件(如http://yoursite/images/signatures/uploadedfile.xxx),有人可以将.php文件放在您的服务器上并执行它!
答案 3 :(得分:1)
显然$ _FILES ['tmp_name']不包含文件名。尝试print_r($_FILES)
查看其中包含的内容。另外,使用multipart / form-data作为表单enctype。