且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

显示来自远程ftp服务器的最近上传的图像-PHP

更新时间:2023-02-05 08:49:07

一旦FTP上传成功,您需要将用户的浏览器重定向到查看器页面.

header("Location: view.php?name=".urlencode(basename($_FILES['file']['name'])));

view.php中,使用示例中的代码从远程FTP服务器下载特定文件" .或参见列出并从FTP下载点击的文件.

请注意,为了使Location标头正常工作,您不能在此之前输出任何内容–因此,没有echo和HTML代码.


但是,由于您没有独立的PHP代码,而是在某些WordPress插件中执行的,因此WordPress甚至在代码开始之前就已经输出了一些HTML标头.因此重定向将无法正常工作.

在WordPress开发Stack Exchange上对此存在疑问:
wp_redirect()在WordPress的插入PHP插件中不起作用.
您又问了一个:
错误:无法修改标头信息"

或者作为la脚的黑客,您可以尝试元重定向:

 <meta http-equiv="refresh" content="0; url=view.php?name=<?php echo urlencode(basename($_FILES['file']['name']));?>">
 

Recently, I have created an upload form in which users can upload their files to a remote FTP server. Until now, everything is going well. However, I have a problem.

I want to make sure that when the user his image is uploaded to the remote FTP server, the image will be displayed immediately on the website. How can I do this? This question has been asked a lot on Stack Overflow. Yet there is a difference. In most cases, the individual wanted to download a specific file from the remote FTP server. This is not the case with me. I want to make sure that the user sees the file he uploaded displayed on the site.

My php code for uploading a file to the remote FTP server:

<?php
if ( empty( $_FILES['file'] ) ) {
?>
<html>
<head>

</head>
<body>
<form action="" enctype="multipart/form-data" method="post">
<input name="file" type="file"/>
<br>
<input name="submit" type="submit" value="Upload uw album" />
</form>
</body>
</html>
<?php
return;
} else {
?>
<html>
<head>
</head>
<body>
<form action="" enctype="multipart/form-data" method="post">
<input name="file" type="file"/>
<br>
<input name="submit" type="submit" value="Upload uw album" />
</form>
</body>
</html>
<?php
}

$ftp_server = "myserver";
$ftp_user_name = "myuser";
$ftp_user_pass = "mypass";
$source_file = $_FILES['file']['tmp_name'];
$destination_folder = "/public_html/wp/wp-content/plugins/AbonneerProgrammas/Albums";
$destination_file = $destination_folder . "/" . basename($_FILES['file']['name']);
$conn_id = ftp_connect($ftp_server);
// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); 
ftp_pasv($conn_id, true); 

// check connection
if ((!$conn_id) || (!$login_result)) { 
    echo "Het spijt ons, er is momenteel geen connectie met de server.";
    //echo "Attempted to connect to $ftp_server for user $ftp_user_name"; 
    exit; 
} else {
     //echo "upload is gelukt";
}

// upload the file
$upload = ftp_put($conn_id, $destination_file, $source_file, FTP_BINARY);
// check upload status
if (!$upload) { 
//
} else {
?>
<meta http-equiv="refresh" content="0; url=https://radioprogrammabank.nl/wp/upload-album/?name=<?php echo urlencode(basename($_FILES['file']['name']));?>">
<?php
echo "<a href=\"$source_file?file=".urlencode($source_file)."\">".htmlspecialchars($source_file)."</a>";
header('Content-Type: application/octet-stream');
echo file_get_contents('ftp://username:password@ftp.example.com/path/' . $_GET["file"]);

echo "upload is gelukt";
}

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

My GUI FTP client is Filezilla. I have looked at Stack Overflow and articles. But without any result. Hopefully, you guys can help me out.

Greetings,

Johan

Once the FTP upload succeeds, you need to redirect user's browser to a viewer page.

header("Location: view.php?name=".urlencode(basename($_FILES['file']['name'])));

In the view.php, use the code from your examples to "download a specific file from the remote FTP server". Or see List and download clicked file from FTP.

Note that for the Location header to work, you cannot output anything before – so no echo and no HTML code.


But as you do not have a standalone PHP code, but you executed it from within some WordPress plugin, the WordPress will have already outputted some HTML headers before your code even starts. So the redirect won't work.

There's a question on this on the WordPress development Stack Exchange:
wp_redirect() not working in Insert PHP plugin in WordPress.
And you have asked another one:
Error: "Cannot modify header information"

Or as a lame hack, you can try meta redirect:

<meta http-equiv="refresh" content="0; url=view.php?name=<?php echo urlencode(basename($_FILES['file']['name']));?>">