三种方法实现php网络请求(表单操作文件上传)

html代码 创建file文件选择文件
	<form action="http://localhost/upload.php" method="post" enctype="multipart/form-data">
			<input type="label" name="label" id="label" value="" placeholder="请上传" />
			<input type="file" name="myFile" id="myFile" />
			<input type="submit" id="" name="" value="提交" />	
		</form>
php代码
var_dump($_FILES);
//获取文件的类型
  function getFileType($fileName){
  	 $start=strpos($fileName,".");
  	  $type=substr($fileName,$start);
  	  return $type;
  }
  $time=time();
  $fn=$_FILES["myFile"]["name"];
  $timestr=strval($time);//强制转化为str类型
  $type=getFileType($fn);
  $fullName=$timestr.$type;
 echo $fullName;
 //把临时文件存储到服务器路径中
$tmp_name=$_FILES["myFile"]["tmp_name"];
$dsPath="myImgs/".$fullName;
// 
 if(file_exists($dsPath)){
 	echo "存在";
 }else{
	//echo "不存在";
	//开始移动文件
	$res=move_uploaded_file($tmp_name,$dsPath);
	var_dump($res);
}

$_FILES 
$_POST 
$_GET 
等函数获取表单内容。 或前端传过来的内容

   
   
$_FILES数组内容如下:  $_FILES['myFile']['name'] 客户端文件的原名称。  $_FILES['myFile']['type'] 文件的 MIME 类型,需要浏览器提供该信息的支持,例如"image/gif"。  $_FILES['myFile']['size'] 已上传文件的大小,单位为字节。  $_FILES['myFile']['tmp_name'] 文件被上传后在服务端储存的临时文件名,一般是系统默认。可以在php.ini的upload_tmp_dir 指定,但 用 putenv() 函数设置是不起作用的。  $_FILES['myFile']['error'] 和该文件上传相关的错误代码。['error'] 是在 PHP 4.2.0 版本中增加的。下面是它的说明:(它们在PHP3.0以后成了常量)  UPLOAD_ERR_OK  值:0; 没有错误发生,文件上传成功。  UPLOAD_ERR_INI_SIZE  值:1; 上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。  UPLOAD_ERR_FORM_SIZE  值:2; 上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。  UPLOAD_ERR_PARTIAL  值:3; 文件只有部分被上传。  UPLOAD_ERR_NO_FILE  值:4; 没有文件被上传。  值:5; 上传文件大小为0.  文件被上传结束后,默认地被存储在了临时目录中,这时您必须将它从临时目录中删除或移动到其它地方,如果没有,则会被删除。也就是不管是否上传成功,脚本执行完后临时目录里的文件肯定会被删除。所以在删除之前要用PHP的 copy() 函数将它复制到其它位置,此时,才算完成了上传文件过程。
echo 输出一个东西,前端能接收到
php var_dump ()函数作用是判断一个变量的类型与长度,并输出变量的数值,如果变量有值输的是变量的值并回返数据类型.

PHP strpos() 函数

strpos() 函数用于检索字符串内指定的字符或文本。

如果找到匹配,则会返回首个匹配的字符位置。如果未找到匹配,则将返回 FALSE。

前面一个参数是要检索的字符串,后面一个是要检索的位置

time()获取当前的时间,返回当前时间的 Unix 时间戳。

file_exists()检查一个文件是否存在,不存在就移动文件
move_uploaded_file() 函数将上传的文件移动到新位置。第一个参数是文件第二个是文件要移动新的位置
FTP上传文件
 //ftp 上传文件
  //1连接到服务器
  //2登录用户名和密码开始上传
  //3上传成功
$ftp_connection=ftp_connect("003.3vftp.com");
ftp_login($ftp_connection,"culiuxiang","sxl2719339");
$res=ftp_put($ftp_connection,$fullName,$tmp_name,FTP_BINARY);
var_dump($res);
ftp_close($ftp_connection);

FTP 函数通过文件传输协议 (FTP) 提供对文件服务器的客户端访问。

FTP 函数用于打开、登录以及关闭连接,同时用于上传、下载、重名命、删除及获取文件服务器上的文件信息。不是所有 FTP 函数对每个服务器都起作用或返回相同的结果。自 PHP 3 起,FTP 函数可用。

ftp_connect() 函数建立一个新的 FTP 连接。

   
   
host

必需。规定要连接的 FTP 服务器。可以是域名或 IP 地址。

后面不应以斜线结尾,前面也不需要用 ftp:// 开头。

port可选。规定 FTP 服务器的端口。
timeout可选。规定该 FTP 服务器的超时时间。默认是 90 秒。
ftp_login() 函数登录 FTP 服务器。
ftp_connection必需。规定要使用的 FTP 连接(主机地址)。username必需。规定用于登录的用户名。password必需。规定用于登录的密码。

ftp_close()关闭ftp连接

//通过fopen打开文件
$fh=fopen($tmp_name,"r");
获取文件大小

创建请求对象
$ch=curl_init();
绑定地址
curl_setopt($ch, CURLOPT_URL, "ftp://003.3vftp.com/images/".$fullName);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_COOKIESESSION, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 300);
curl_setopt($ch, CURLOPT_USERPWD, "culiuxiang:sxl2719339");

curl_setopt($ch, CURLOPT_UPLOAD, 1);
curl_setopt($ch, CURLOPT_INFILE, $fh);
curl_setopt($ch, CURLOPT_INFILESIZE, filesize($tmp_name));

$res = curl_exec($ch);
if (!curl_error($ch)) {
	echo "上传成功" . $res;
	var_dump($res);
} else {
	echo "上传失败: " . curl_error($ch);
}
  
// PHP 支持 Daniel Stenberg 创建的 libcurl 库,能够连接通讯各种服务器、使用各种协议。libcurl 目前支持的协议
http、https、ftp、gopher、telnet、dict、file、ldap。 libcurl 同时支持 HTTPS 证书、HTTP POST、HTTP PUT、 
FTP 上传(也能通过 PHP 的 FTP 扩展完成)、HTTP 基于表单的上传、代理、cookies、用户名+密码的认证。

//这些函数在 PHP 4.0.2 中引入。 
fopen()打开文件, 的第一个参数包含被打开的文件名,第二个参数规定打开文件的模式。 
r打开文件为只读。文件指针在文件的开头开始。w打开文件为只写。删除文件的内容或创建一个新的文件,如果它不存在。
文件指针在文件的开头开始。
a打开文件为只写。文件中的现有数据会被保留。文件指针在文件结尾开始。创建新的文件,如果文件不存在。
x创建新文件为只写。返回 FALSE 和错误,如果文件已存在。r+打开文件为读/写、文件指针在文件开头开始。
w+打开文件为读/写。删除文件内容或创建新文件,如果它不存在。文件指针在文件开头开始。
a+打开文件为读/写。文件中已有的数据会被保留。文件指针在文件结尾开始。创建新文件,如果它不存在。
x+创建新文件为读/写。返回 FALSE 和错误,如果文件已存在。

     
     
CURLOPT_HEADER启用时会将头文件的信息作为数据流输出。

CURLOPT_USERPWD 用户名和密码

CURLOPT_UPLOADTRUE 准备上传。

CURLOPT_INFILE 文件













评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值