c++ | Winsock -写HTTP Post上传文件的正确方法
C++ | Winsock - Correct way to write HTTP Post for uploading a file?
警告我看到一些人问过,但通常是关于CURL的,我问的是通过WinSock2发送。
好吧,所以我知道如何使POST和GET语句很容易,(POST与应用程序/应用程序/x-www-form-urlencoded),但我不确定如何使用多部分/表单数据,我知道它有一些东西与边界指定当你完成发送数据。
但是上传文件的基本HTTP POST应该是什么样子呢?(也可以上传到PHP POSTBACK吗?如果它是application/x-www-form-urlencoded,我可以看到类似filename=hello.png&data=…)
像这样的格式:(这是我所知道的关于发送数据)我在网上找不到一个坚实的例子,所以我问这个问题。
POST /postback.php HTTP/1.1
HOST: www.website.com
Content-Type: multipart/form-data; boundary=----IAmABoundary
Content-Length: 300
------IAmABoundary
Send Binary Data?
------IAmABoundary--
使用fiddler捕获上传文件,然后您可以看到实际格式,我记得上面的示例或多或少是正确的。这里有一个更完整的答案和一个很好的例子:multipart/form-data
HTTP消息是MIME消息。它实际上是一种相当复杂的编码格式。
从阅读RFC 2045开始。这是MIME的基本规范。
然后,转到RFC 2046。RFC 2046的第5节列出了multipart
MIME消息的规范,它用于您看到的multipart/form-data
格式。
确实有很多材料要通读。但是,为了理解文件上传是如何工作的,完全理解mime格式的消息是必要的。
如果你想发送文件内容实际上你可以把文件内容放在HTTP header后面,并设置内容类型和长度
multipart/form-data被HTML表单用来发布/提交字段中有文件的表单,它们使用multipart边界分隔部分/字段
- 如何使用curlpp通过POST方法上传文件和json数据
- 一种在C++中读取TXT配置文件的简单方法
- 在 cpp 文件中隐藏采用模板参数引用的方法
- 在C++中包含原型文件的正确方法是什么?
- 通过比较C++中的行在 txt 文件中搜索的最简单方法是什么?
- 不带预处理器的调用方法/文件的文件名/行号
- 引用文件的适当方法是什么?
- 在文件中写入而不是在 c++ 中使用 "<<" 的替代方法?
- 查找定义我的 C/C++ 函数/宏的文件比'grep'更简单的方法
- 读取大文件(>2GB)(文本文件包含以太网数据)并通过不同参数随机访问数据的最佳方法是什么?
- 在C++中创建文件夹选取器对话框的最简单方法是什么?
- C++:std::ofstream 方法 open() 在第二次迭代时擦除打开的 ifstream 文件
- 如何使用 C/C++ 和 system() 系统调用以外的其他方法在 Linux 中获取文件功能?
- 创建进行生产构建并创建调试信息的C++生成文件的最佳方法?
- 是否有正确的方法对生成文件中的对象文件使用模板命令?(C++)
- 将位字符串转储到二进制文件的最佳方法是什么
- 在目录中查找所有.cpp.h文件(include,src等)的传统方法
- 是在DEX文件方法计数中计数的本机C 方法
- C++更新 txt 文件方法
- h头文件方法混乱