如何使用ftp上传base64_decode($data)


how to upload a base64_decode($data) using ftp?

我正试图将mp3文件上传到我的ftp服务器:

$data = substr($_POST['data'], strpos($_POST['data'], ",") + 1);
$decodedData = base64_decode($data);
$filename = urldecode($_POST['fname']);
$cid = ftp_connect("foo.com");
$result = ftp_login($cid, "rodrigo@foo.com","password");
if ((!$cid) || (!$result)) {
    echo "connection failed"; die;
} else {
    echo "connected";
}
ftp_pasv ($cid, true);
ftp_chdir($cid, "my_folder");
if (ftp_put($cid, $filename, $decodedData, FTP_BINARY)) {
    //...
} else {
    //...
}

我有这个警告:

Warning:  ftp_put(���) [function.ftp-put]: failed to open stream: Invalid argument in...

我找不到如何发送有效的参数

您需要创建一个可以传递的文件,下面的示例将文件写入内存,而不是磁盘上的文件。。。但您可能需要将其写入磁盘,具体取决于大小。

$tmp = fopen('php://memory', 'r+');
fputs($tmp, $decodedData);
rewind($tmp);
if (ftp_fput($cid, $filename, $tmp, FTP_BINARY)) {
}