我现在已经尝试了几个小时,但不知怎的,我不知道问题。以下是我的请求示例:
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#很了解,这是我的第二个问题。我正在尝试将文件上传到我的服务器,并且filedata以某种方式没有正确请求,我认为这是因为编码,但我不确定。
_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;
}
答案 0 :(得分:1)
您必须在没有前导破折号的情况下指定边界(在第4行)。此外,我只计算92字节的有效载荷。
答案 1 :(得分:1)
为了使这个答案更加完整,在" multipart / form-data"之后必须有一个分号。 (见w3c forms spec)
Content-Type: multipart/form-data; boundary=635131229269