关于post通过php上传文件的信息

发布时间:2022-11-09

本文目录一览:

  1. GET请求和POST请求、文件上传操作
  2. 如何用POST方法上传文件
  3. php 模拟post 上传
  4. php网页上传文件 用post 怎么做。我有网页
  5. php大神来,post提交文本或者提交文件

GET请求和POST请求、文件上传操作

文件上传遵循的流程:

  • 选取文件提交 == 存入服务器暂存区 == 有后续操作后存入到服务器 ☆ 在php中文件上传必须得是 post 请求
    ☆ 必须给表单设置 enctype 属性
    ☆ 1. 在php中,上传之后的相关信息都存储在 $_FILES 超全局变量中
    ☆ 2.使用一个方法来实现文件的移动,否则文件将在程序结束后被自动遗弃
    ☆ 3. move_uploaded_file (源文件的全路径, 目标文件的全路径)
    ☆ 4.文件夹是手动创建的
    由于发送的是 post 请求,结果文件一打开的时候就开始了一些操作,发现报错了。
    所以,在打开文件的时候,还得需要一些判断。
    文件名称不固定,设置合理的文件名称。
    当上传的文件比较大的时候,会出不来想要的效果。
    而此时,得到的 $_FILES 数组中, error 指向的值为 1。
    根据查询手册得知,这里的意思指的是,上传的文件超出了大小。
    如果需要修改大小的范围,需要修改配置文件。
    服务器对每一次post请求传递做了限制,默认为8M。
    可以修改配置文件,改大对应的值,搜索post_max_size
    和上图操作类似 找到 php-ini配置。
    找到位置后,该变原有的大小。
    同时上传多个文件:
    在选择的表单元素中加入 multiple,则可以选中多个文件。
    input type="file" name="myfile" multiple
    1.0 如果需要后端服务器的 $_FILES 接收多个文件,则需要在 name属性值`后面加上 [ ]
    2.0 实现完成效果

如何用POST方法上传文件

POST方法上传文件 随着PHP不断的完善,PHP对文件上传的支持也越来越完美,在PHP 4.0.3以前我们只能用copy()is_uploaded_file()方法结合来上传文件,呵呵,其实就是这样我们也会感觉到PHP相对于ASP来说上传文件要方便很多,这也就是本人选择PHP的一点小小的引以为豪的地方。PHP 4.0.3之后PHP又出了一个新函数move_uploaded_file()。上传文件相对来说又简便了不少,只要这一个函数就行(我可不是说上传文件系统只要就一个函数就足够了,大家可不要误解我的意思,我的意思是move_uploaded_file是上传文件的一个核心函数)。 好了,我们看一个三个函数的讲解(资料来自:PHP手册):

  • copy(string source,string desk);
    将文件从 source 拷贝到 dest。如果成功则返回 TRUE,失败则返回 FALSE。
    例:
    if (!copy($file, $file.'.bak')) {
        print ("failed to copy $file...br\n");
    }
    
  • is_uploaded_file(string filename)
    如果 filename 所给出的文件是通过 HTTP POST 上传的则返回 TRUE。
  • move_uploaded_file(string filename, string destination)
    本函数检查并确保由 filename 指定的文件是合法的上传文件(即通过 PHP 的 HTTP POST 上传机制所上传的)。如果文件合法,则将其移动为由 destination 指定的文件。 由三个函数的解释就可以得到一个结论,move_uploaded_file()copy()is_uploaded_file()函数的结合。 讲了这么半天大家用起这三个函数可能还会有些生疏,下面给大家两个例子: 首先,建立一个前台页面,命名为index.html
<form enctype="multipart/form-data" action="_URL_" method="post">
    Send this file: <input name="filename" type="file" />
    <input type="submit" value="Send File" />
</form>
  1. 下面是关于copy()is_uploaded_file()方法上传文件的方法(保存为:copy.php,上传文件需要将index.html中的_URL_改为copy.php
<?php
$path="./uploadfiles/";
if(is_uploaded_file($filename)) //特别注意这里,传递给is_uploaded_file的为$filename,可不要传递$_FILES["filename"]["name"]
{
    $file1=$_FILES["filename"]["name"]; //注意这里$_FILES[]方法为PHP4.1.0及以上版本支持,PHP以下的版本要用$HTTP_POST_FILES[]方法
    $file2=$path.time().$file1;
    $flag=1;
}
if($flag)
    $result=copy($_FILES['filename']['tmp_name'],$file2);
if($result)
    echo "上传成功!";
?>
  1. 下面是关于move_uploaded_file()方法上传文件的方法(保存为:move.php,上传文件需要将index.html中的_URL_改为move.php
<?php
$path="./uploadfiles/";
if($_FILES["filename"]["name"]){
    $file1=$_FILES["filename"]["name"];
    $file2 = $path.time().$file1;
    $flag=1;
}
if($flag)
    $result=move_uploaded_file($_FILES["filename"]["tmp_name"],$file2); //特别注意这里传递给move_uploaded_file的第一个参数为上传到服务器上的临时文件
if($result)
    echo "上传成功!";
?>

文件上传就讲到这里了,这只是两个小程序,其实要完成文件上传所要的代码可不是这些就能了事的。一般还要有文件大小限制,文件扩展名选取,还有一些其它的安全方案。

php 模拟post 上传

你写一个方法把,在php里面可以使用curl库来模拟这样的表单。代码如下:

//curl实现post请求
public function curl_post($url, $data = null){
    //创建一个新cURL资源
    $curl = curl_init();
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // 跳过证书检查
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); // 从证书中检查SSL加密算法是否存在
    //设置URL和相应的选项
    curl_setopt($curl, CURLOPT_URL, $url);
    if (!empty($data)){
        curl_setopt($curl, CURLOPT_POST, 1);
        curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
    }
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    //执行curl,抓取URL并把它传递给浏览器
    $output = curl_exec($curl);
    //关闭cURL资源,并且释放系统资源
    curl_close($curl);
    return $output;
}

php网页上传文件 用post 怎么做。我有网页

<form name="name" action="url" method="post" enctype="multipart/form-data">
    <input name="name" type="file" />
    <input type="submit" value="submit" />
</form>

$_FILES['name'] 接收。 最近在研究五指cms 他上面的上传模块更智能。

php大神来,post提交文本或者提交文件

前端 index.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "">
<html xmlns="">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>无标题文档</title>
</head>
<body>
    <form method="post" enctype="multipart/form-data" action="./manage.php" name="">
        <input type="file" name="uploadfile" id="uploadfile" />
        <input type="submit" name="upload" id="upload" value="上传" />
    </form>
</body>
</html>

后端manage.phpindex.php同一层

<?php
if(!empty($_FILES["uploadfile"]['tmp_name'])){
    $up_name = $_FILES["uploadfile"];
    $up_size = $up_name["size"];
    $up_type = $up_name["type"];
    $up_path = $up_name['tmp_name'];
    $up_fname = $up_name['name'];
    $exten = pathinfo($up_fname, PATHINFO_EXTENSION);
    $objname = date('YmdHis', time());
    $save = $objname.'.'.$exten;
    $max_size = '314572800'; //300M 1024*1024*300
    $up_limit = array(
        "application/msword",
        "text/html",
        "application/pdf",
        "application/vnd.ms-powerpoint",
        "text/plain",
        "application/vnd.ms-excel",
        "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
        "application/vnd.openxmlformats-officedocument.presentationml.presentation",
        "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
    );
    if(in_array($up_type, $up_limit) && $up_size <= $max_size && $up_size > 0){
        if(move_uploaded_file($up_path, $save)){
            $msg = '上传成功';
        } else {
            $msg = '上传失败';
        }
    } else {
        $msg = '上传类型或大小不符合';
    }
} else {
    $msg = '无上传文件';
}
echo $msg;
?>