0

我现在已经尝试了几个小时,但不知何故我不知道问题所在。这是我的请求示例:

POST /test/upload/upload.php HTTP/1.0
Host: localhost
User-Agent: TestBrowser
Content-Type: multipart/form-data, boundary=635131229269 //edited
Content-Length: 94

--635131229269
Content-Disposition: form-data; name="testme"

contender
--635131229269--

它通过标准 TCP/IP 套接字发送到 PHP 服务器,但 $_POST['testme'] 值始终为空。

有人可以看到此请求中的错误吗?--> 解决了

末尾有一个 \r\n ,这里的代码中没有显示。

谢谢,这解决了我的第一个问题。

也许你也可以帮助我的第二个。正如我在您的个人资料中看到的那样,您对 C# 非常熟悉,这是我的第二个问题。我正在尝试将文件上传到我的服务器并且文件数据以某种方式没有正确请求,我认为这是因为编码,但我不确定。

_content = _content
     + "--" + boundary + Environment.NewLine
     + "Content-Disposition: form-data; name=\"" + this._FileVarName + "\"; filename=\"" + Path.GetFileName(this._FilePath) + "\""
     + Environment.NewLine + "Content-Transfer-Encoding: application/octet-stream"
     + Environment.NewLine + Environment.NewLine;

mainContent = this.Combine(Encoding.UTF8.GetBytes(_content), StreamFile(this._FilePath));

private Byte[] StreamFile(string Path)
{
  FileStream fs = new FileStream(Path, FileMode.Open, FileAccess.Read);
  Byte[] ImageData = new byte[fs.Length];
  fs.Read(ImageData, 0, System.Convert.ToInt32(fs.Length));
  fs.Close();
  return ImageData;
}
4

2 回答 2

1

您必须在没有前导破折号的情况下指定边界(在第 4 行)。此外,我只计算了 92 个字节的有效负载。

于 2012-08-09T12:12:35.887 回答
1

只是为了让这个答案更完整一点,“multipart/form-data”之后必须有一个分号(参见w3c forms spec

Content-Type: multipart/form-data; boundary=635131229269
于 2014-07-29T10:46:10.423 回答