php 文件上传以及传输相关配置问题

文件上传:

 1、php.ini  配置

上传(超过2MB)大文件主要涉及配置upload_max_filesizepost_max_size两个选项。

 默认upload_max_filesize = 2M,即文件上传的大小为2M,如果你想上传超过8M的文件,比如20M,你必须设定                        upload_max_filesize = 20M。

但是光设置upload_max_filesize = 20M还是无法实现大文件的上传功能,你必须修改php.ini配置文件中的post_max_size              选项,其代表允许POST的数据最大字节长度,默 认为8M。如果POST数据超出限制,那么$_POST和$_FILES将会为              空。 

要上传大文件,你必须设定该选项值大于 upload_max_filesize指令的值,我一般设定upload_max_filesize和                    post_max_size值相等。另外如果启用 了内存限制,那么该值应当小于memory_limit选项的值

在上传大文件时,你会有上传速度慢的感觉,当超过一定的时间,会报脚本执行超过30秒的错误,这是因为在php.ini配置            文  ax_execution_time配置选项在作怪,其表示每个脚本最大允许执行时间(秒),0 表示没有限制。你可以适当调整                      max_execution_time的值,不推荐设定为0。

2、nginx                   

 修改/usr/local/nginx/conf/nginx.conf 文件,查找 client_max_body_size 将后面的值设置为你想设置的值

服务器之间文件传输

一般用curl 进行文件传输,做成文件流,文件太大的话,使用form-data,另外请求慢的话注意设置超时时间

$this_header = array("content-type: multipart/form-data; charset=UTF-8")
curl_setopt($ch, CURLOPT_HTTPHEADER, $this_header);//请求方式
curl_setopt($ch, CURLOPT_TIMEOUT, 30);//设置超时时间

 上传文件做成文件流形式:

public  function getFile(){
    $stream=$_FILES['file'];
    if($stream['error']!==0){
       return false;
    }
    $handle = fopen($stream['tmp_name'], "r");//读取二进制文件时,需要将第二个参数设置成'rb'
    //通过filesize获得文件大小,将整个文件一下子读到一个字符串中
    $contents = fread($handle, filesize($stream['tmp_name']));
    $stream=base64_encode($contents);
    return $stream;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值