3

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

客户端代码(c#):

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

2 回答 2

12

是的,$_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 函数将上传的文件存储到正确的位置

于 2013-03-15T07:29:06.667 回答
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 here...

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

   }  

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

于 2013-03-15T07:45:03.960 回答