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

Tir*_*udi 1 php http httpwebrequest

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

客户端代码(C#):

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

Lix*_*xas 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";
}
?>
Run Code Online (Sandbox Code Playgroud)

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

  • 我要确保已指出,如果使用此选项,则要确保检查服务器端的文件类型和所有好的内容,以确保没有人上传任何恶意软件。(即使您在客户端进行检查,因为任何内容都可以发布到后端^^) (2认同)