ftp_fput()
需要一个已打开的资源,而ftp_put()
只需使用(本地)文件名。
ftp_put($foo, $bar, $filename, $baz);
ftp_fput($foo, $bar, fopen($filename, 'r+b'), $baz);
ftp_fput
在传输之前实际上只读取文件一次吗? - 夏期劇場fopen()
使用一个打开的流资源。上面的两个例子完全等价。如果您已经有一个打开的资源,或者想处理特殊类型的资源(如php://temp
或远程资源,如http://google.com
),请使用ftp_fputs()
。如果您只想上传本地文件,则没有必要先自己打开它(也就是说:使用ftp_put()
)。 - KingCrunch更具体地说,ftp_fput
使用由fopen
创建的资源作为要上传的文件,而ftp_put
则使用文件名字符串。
ftp_put
需要一个文件名,而ftp_fput
需要一个文件句柄:
ftp_put($conn_id, "remote_file_name.txt", "local_file_name.txt", FTP_ASCII);
但是
$file_handle = fopen("local_file_name.txt", "r");
ftp_fput($conn_id, "remote_file_name.txt", $file_handle, FTP_ASCII);
ftp_fput
需要在传输前打开文件。嗯...在传输之前读取整个文件的好处是什么呢? :( 所以我认为这不是一个好的选择方法。 - 夏期劇場fread()
;) 是的,如果您不需要打开它,则自己打开它是没有用的。 - KingCrunchfopen
不会读取整个文件,它只是打开文件。通常情况下,ftp_put
是首选的方法,但如果您事先验证文件内容,则可以使用 ftp_fput
。在验证后仍然可以使用 ftp_put
,但在 Linux 中使用时不太安全(当您的文件处于打开状态时,该文件可能会被重新创建)。 - Markftp_fput()
允许从文件中的某个位置开始。
ftp_fput
似乎接受文件句柄,而ftp_put
接受文件名。 - Blender