Coloque um arquivo no site FTP com o conteúdo da variável string (sem arquivo local)
Quero fazer upload de um arquivo para um servidor FTP, mas o conteúdo do arquivo é mantido em uma variável, não em um arquivo local real. Eu quero evitar o uso de um arquivo; isso é para evitar riscos de segurança ao lidar com dados confidenciais em um sistema (possivelmente) não tão seguro(*), bem como para minimizar a sobrecarga (já baixa) da manipulação de arquivos.
Mas a API FTP do PHP oferece apenas o upload de arquivos de arquivos locais através da funçãoftp_put
ou (quando o arquivo já estiver aberto como um identificador de arquivo)ftp_fput
.
Atualmente, eu uso essa função com um arquivo temporário no qual escrevo o conteúdo antes do upload:
$tmpfile = tmpfile();
fwrite($tmpfile, $content);
fseek($tmpfile, 0);
ftp_fput($ftp, $filename, $tmpfile, FTP_BINARY);
Existe uma maneira mais simples sem usar arquivos no site local (PHP)?
Há simftp_raw
que pode ser usado para enviar comandos arbitrários, para que eu possa emitir oPUT
comando manualmente, no entanto, não vejo uma maneira de escrever manualmente os dados no canal de dados ...
Não sei se é importante, mas a conexão FTP está protegida com SSL (ftp_ssl_connect
)
(*) Considere o cenário em que um invasor tem controle somente leitura sobre todo o sistema de arquivos.