如何从php中的http帖子接收文件(即文本文件)?

时间:2013-03-15 07:24:34

标签: php http httpwebrequest

我使用client(C#)webclientHttpWebRequest发送文件。我想知道如何在PHP(Server)中接收客户端发送的文件。                我检查了$_POST,它是空的。

客户端代码(c#):

using (WebClient client = new WebClient())
{
 client.UploadFile("http://path/file.php","POST",@"Data.txt");
}

2 个答案:

答案 0 :(得分:6)

是的,$_POST为空,您应该检查上传文件的$_FILES变量: 这是快速片段:

<?php
$uploaddir = "uploads/";
$uploadfile = $uploaddir . basename( $_FILES['file']['name']);

if(move_uploaded_file($_FILES['file']['tmp_name'], $uploadfile))
{
  echo "The file has been uploaded successfully";
}
else
{
  echo "There was an error uploading the file";
}
?>

以上脚本中$ _FILES的内容如下。

$ _ FILES ['file'] ['name'] 客户端计算机上文件的原始名称。

$ _ FILES ['file'] ['type'] 如果浏览器提供此信息,则为文件的mime类型。一个例子是“image / gif”。

$ _ FILES ['file'] ['size'] 上传文件的大小(以字节为单位)。

$ _ FILES ['file'] ['tmp_name'] 上传文件存储在服务器上的文件的临时文件名。

$ _ FILES ['file'] ['error'] 自PHP 4.2.0起,PHP会返回适当的跟随错误代码以及文件数组

  • 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;没有上传文件。

默认情况下,上传的文件将存储在服务器的默认临时目录中。变量 $ _ FILES ['file'] ['tmp_name'] 将保存有关存储位置的信息。需要使用move_uploaded_file函数将上传的文件存储到正确的位置

答案 1 :(得分:2)

您应该使用以下代码作为参考:

    if(isset($_FILES['file']['name']) && !empty($_FILES['file']['name']))
    {
    $name=$_FILES['file']['name'];

    $size=$_FILES['file']['size'];
    $type=$_FILES['file']['type'];
    $tmp_name=$_FILES['file']['tmp_name'];
    $error=$_FILES['file']['error'];
    $maxsize ="Your size limit";
    $location='Your location to upload file';

    // perform any security check operation here.... and then 

   if($size <= maxsize)
    {
     if(move_uploaded_file($tmp_name, $location.$name))
        {
          // perform your operation down here
        }
    }

   }  

注意: - $ _FILES ['file'] ['name']在此行文件中代表表单文件字段的名称。