本文目录一览:
- 1、php ftp_get 如何写入本地文件
- 2、PHP跨域上传的几种方法
- 3、我linux服务器上面有两个站点用php语言file_exists跨站检测和unlink删除文件为啥失效?
- 4、file_get_contents() 可以通过ftp获取内容吗? 我想获取通过ftp上的文件。
- 5、通过input的file属性将文件用php的ftp上传到服务器
- 6、php ftp_get函数存放路径问题
php ftp_get 如何写入本地文件
ftp_get
仅是下载,如果本地有内容你不想覆盖的话那就按照时间戳变更下载后的文件名,如果要对文件进行操作
PHP写入文件需要:打开文件fopen()、写入数据fwrite()和关闭文件
fclose()
$fp=fopen("../cnbruce.txt",'w');
r
只读——读模式,打开文件,从文件头开始读
r+
可读可写方式打开文件,从文件头开始读写
w
只写——写方式打开文件,同时把该文件内容清空,把文件指针指向文件开始处。如果该文件已经存在,将删除文件已有内容;如果该文件不存在,则建立该文件
w+
可读可写方式打开文件,同时把该文件内容清空,把文件指针指向文件开始处。如果该文件不存在,则建立该文件
a
追加
以只写方式打开文件,把文件指针指向文件末尾处。如果该文件不存在,则建立该文件
a+
追加
以可读可写方式打开文件,把文件指针指向文件末尾处。如果该文件不存在,则建立该文件
b
二进制
用于于其他模式进行连接。建议使用该选项,以获得更大程度的可移植性
注意,如果fopen()函数调用失败,函数将返回false。否则返回指针数据。所以一般在打开了文件后\读写文件前需要检测下文件是否存在。
PHP跨域上传的几种方法
方法一:
文件夹:/home/web/attachments
虚拟二级目录到/home/web/zxsv/下(支持同局域网的服务器)
这样多个子域名进行上传的设计时,只需要attachments目录映射为相关的域名的二级目录,这样就可实现多个子域名共享一个附件服务器了,这种方法最好是用局域网中的附件服务器,这样流量是分开的,当然访问附件的域名是apache,ngixn,IIS等的虚拟二级目录就不说了,好处是现有程序不做任何修改,唯一坏处就是两台服务器必须在一个局域网中,当然你用单台也就没这个问题了-phpftp判断文件夹是否存在
方法二:FTP同步更新
PHP是支持FTP的,给个FTP类里面(不是我写的,只是加了个建立多级目录),自己看着办吧,上传后调用FTP类,同步到FTP服务器中,好处是现有程序只需要在上传那段加上FTP上传就行了,坏处就是一定要支持FTP-phpftp判断文件夹是否存在
?php
$ftp=new Ftp;
//print_r($ftp-nlist(”"));
$ftp-makedir(”3″);
//$ftp-put(”comment.php”,”1.txt”);
$ftp-bye();
//R FTP 处理;
class ftp {
var $ftpUrl = ‘’;
var $ftpUser = ‘zxsv’;
var $ftpPass = ‘111111′;
var $ftpDir = ‘/zxsv/’;
var $ftpR = ”; //R ftp资源;
var $status = ”;
//R 1:成功;2:无法连接ftp;3:用户错误;
function ftp() {
if ($this-ftpR = ftp_connect($this-ftpUrl, 21)) {
if (ftp_login($this-ftpR, $this-ftpUser, $this-ftpPass)) {
if (!empty($this-ftpDir)) {
ftp_chdir($this-ftpR, $this-ftpDir);
}
ftp_pasv($this-ftpR, true);//R 启用被动模式;
$status = 1;
} else {
$status = 3;
}
} else {
$status = 2;
}
}
//R 切换目录;
function cd($dir) {
return ftp_chdir($this-ftpR, $dir);
}
//建立目录
function mkdir($dir){
return ftp_mkdir($this-ftpR, $dir);
}
function makedir($dir) {
if(!$dir) return 0;
$dir = str_replace( “\\”, “/”, $dir );
$mdir = “”;
foreach(explode( “/”, $dir ) as $val ) {
$mdir .= $val.”/”;
if( $val == “..” || $val == “.” ) continue;
if(!@mkdir($mdir)){
echo “创建目录 [".$mdir."]失败.”;
//exit;
}
}
return true;
}
//删除目录
function rmdir($dir){
return ftp_rmdir($this-ftpR, $dir);
}
//R 返回当前路劲;
function pwd() {
return ftp_pwd($this-ftpR);
}
//R 上传文件;
function put($localFile, $remoteFile = ”) {
if ($remoteFile == ”) {
$remoteFile = end(explode(’/', $localFile));
}
$res = ftp_nb_put($this-ftpR, $remoteFile, $localFile, FTP_BINARY);
print_r($res);
while ($res == FTP_MOREDATA) {
$res = ftp_nb_continue($this-ftpR);
}
if ($res == FTP_FINISHED) {
return true;
} elseif ($res == FTP_FAILED) {
return false;
}
}
//R 下载文件;
function get($remoteFile, $localFile = ”) {
if ($localFile == ”) {
$localFile = end(explode(’/', $remoteFile));
}
if (ftp_get($this-ftpR, $localFile, $remoteFile, FTP_BINARY)) {
$flag = true;
} else {
$flag = false;
}
return $flag;
}
//R 文件大小;
function size($file) {
return ftp_size($this-ftpR, $file);
}
//R 文件是否存在;
function isFile($file) {
if ($this-size($file) = 0) {
return true;
} else {
return false;
}
}
//R 文件时间
function fileTime($file) {
return ftp_mdtm($this-ftpR, $file);
}
//R 删除文件;
function unlink($file) {
return ftp_delete($this-ftpR, $file);
}
function nlist($dir = ‘/service/resource/’) {
return ftp_nlist($this-ftpR, $dir);
}
//R 关闭连接;
function bye() {
return ftp_close($this-ftpR);
}
}
?
我linux服务器上面有两个站点用php语言file_exists跨站检测和unlink删除文件为啥失效?
跨站点检测和取消链接删除文件不是使用 PHP 语言 file_exists 函数的有效方法。 file_exists 函数用于确定文件是否存在于系统中,而不是删除它。 要删除文件,应该使用 unlink 函数。 此外,使用 file_exists 函数来确定文件是否存在于另一个网站上不是对该函数的有效使用,并且可能导致潜在的安全问题。-phpftp判断文件夹是否存在
file_get_contents() 可以通过ftp获取内容吗? 我想获取通过ftp上的文件。
通常,在 php 里获取 ftp 服务器上的文件,使用 ftp_get 及相关的 ftp 函数,以下是示例:
?php
// define some variables
$local_file = 'local.zip';
$server_file = 'server.zip';
// connect to the FTP server
$conn_id = ftp_connect($ftp_server);
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
// try to download
if (ftp_get($conn_id, $local_file, $server_file, FTP_BINARY)) {
echo "Successfully written to $local_file ";
} else {
echo "There was a problem ";
}
// close the connection
ftp_close($conn_id);
?
通过input的file属性将文件用php的ftp上传到服务器
html部分:
html
body
form action="upload_file.php" method="post"
enctype="multipart/form-data"
label for="file"Filename:/label
input type="file" name="file" id="file" /
br /
input type="submit" name="submit" value="Submit" /
/form
/body
/html
提示:
form 标签的 enctype 属性规定了在提交表单时要使用哪种内容类型。在表单需要二进制数据时,比如文件内容,请使用 "multipart/form-data"。
input 标签的 type="file" 属性规定了应该把输入作为文件来处理。举例来说,当在浏览器中预览时,会看到输入框旁边有一个浏览按钮。
注释:允许用户上传文件是一个巨大的安全风险。请仅仅允许可信的用户执行文件上传操作。
php部分:
创建上传脚本
"upload_file.php" 文件含有供上传文件的代码:
?php
if ($_FILES["file"]["error"] 0)
{
echo "Error: " . $_FILES["file"]["error"] . "br /";
}
else
{
echo "Upload: " . $_FILES["file"]["name"] . "br /";
echo "Type: " . $_FILES["file"]["type"] . "br /";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kbbr /";
echo "Stored in: " . $_FILES["file"]["tmp_name"];
}
?
通过使用 PHP 的全局数组 $_FILES,你可以从客户计算机向远程服务器上传文件。
第一个参数是表单的 input name,第二个下标可以是 "name", "type", "size", "tmp_name" 或 "error"。就像这样:
$_FILES["file"]["name"] - 被上传文件的名称
$_FILES["file"]["type"] - 被上传文件的类型
$_FILES["file"]["size"] - 被上传文件的大小,以字节计
$_FILES["file"]["tmp_name"] - 存储在服务器的文件的临时副本的名称
$_FILES["file"]["error"] - 由文件上传导致的错误代码
这是一种非常简单文件上传方式。基于安全方面的考虑,您应当增加有关什么用户有权上传文件的限制。
上传限制
在这个脚本中,我们增加了对文件上传的限制。用户只能上传 .gif 或 .jpeg 文件,文件大小必须小于 20 kb:
?php
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
($_FILES["file"]["size"] 20000))
{
if ($_FILES["file"]["error"] 0)
{
echo "Error: " . $_FILES["file"]["error"] . "br /";
}
else
{
echo "Upload: " . $_FILES["file"]["name"] . "br /";
echo "Type: " . $_FILES["file"]["type"] . "br /";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kbbr /";
echo "Stored in: " . $_FILES["file"]["tmp_name"];
}
}
else
{
echo "Invalid file";
}
?
注释:对于 IE,识别 jpg 文件的类型必须是 pjpeg,对于 FireFox,必须是 jpeg。
保存被上传的文件
上面的例子在服务器的 PHP 临时文件夹创建了一个被上传文件的临时副本。
这个临时的复制文件会在脚本结束时消失。要保存被上传的文件,我们需要把它拷贝到另外的位置:
?php
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
($_FILES["file"]["size"] 20000))
{
if ($_FILES["file"]["error"] 0)
{
echo "Return Code: " . $_FILES["file"]["error"] . "br /";
}
else
{
echo "Upload: " . $_FILES["file"]["name"] . "br /";
echo "Type: " . $_FILES["file"]["type"] . "br /";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kbbr /";
echo "Temp file: " . $_FILES["file"]["tmp_name"] . "br /";
if (file_exists("upload/" . $_FILES["file"]["name"]))
{
echo $_FILES["file"]["name"] . " already exists. ";
}
else
{
move_uploaded_file($_FILES["file"]["tmp_name"],
"upload/" . $_FILES["file"]["name"]);
echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
}
}
}
else
{
echo "Invalid file";
}
?
上面的脚本检测了是否已存在此文件,如果不存在,则把文件拷贝到指定的文件夹。
注释:这个例子把文件保存到了名为 "upload" 的新文件夹。
php ftp_get函数存放路径问题
看下php手册 ftp_get中的第二,第三个参数的位置,你写反过来了
第二个参数是的你的本地路径,第三个参数是书远程路径。