http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 7665|回复: 8

[求助] 请问一下怎样拼接multipart/form-data这种数据格式?

[复制链接]
发表于 2015-3-4 16:28:20 | 显示全部楼层 |阅读模式
本帖最后由 chinaceo 于 2015-3-4 16:29 编辑



请问一下怎样拼接multipart/form-data这种数据格式?

------------ei4ei4ae0Ef1Ij5cH2cH2cH2ae0Ij5
Content-Disposition: form-data; name="Filename"

d833c895d143ad4bd45997dc81025aafa40f06b2.jpg
------------ei4ei4ae0Ef1Ij5cH2cH2cH2ae0Ij5
Content-Disposition: form-data; name="PHPSESSID"

uo9jslgks5mvpu1f577maivs74
------------ei4ei4ae0Ef1Ij5cH2cH2cH2ae0Ij5
Content-Disposition: form-data; name="Filedata"; filename="d833c895d143ad4bd45997dc81025aafa40f06b2.jpg"
Content-Type: application/octet-stream

------------ei4ei4ae0Ef1Ij5cH2cH2cH2ae0Ij5
Content-Disposition: form-data; name="Filename"

d833c895d143ad4bd45997dc81025aafa40f06b2.jpg
------------ei4ei4ae0Ef1Ij5cH2cH2cH2ae0Ij5
Content-Disposition: form-data; name="PHPSESSID"

uo9jslgks5mvpu1f577maivs74
------------ei4ei4ae0Ef1Ij5cH2cH2cH2ae0Ij5
Content-Disposition: form-data; name="Filedata"; filename="d833c895d143ad4bd45997dc81025aafa40f06b2.jpg"
Content-Type: application/octet-stream

这里是图片的二进制,这里显示不出来,所以我用文字代替了.


------------ei4ei4ae0Ef1Ij5cH2cH2cH2ae0Ij5
Content-Disposition: form-data; name="Upload"

Submit Query
------------ei4ei4ae0Ef1Ij5cH2cH2cH2ae0Ij5--


我在程序中
Method = "post",
Postdata = postfile,
PostDataType = PostDataType.FilePath,
ContentType = "multipart/form-data"


ContentType我已经有设置了,但只是这有个问题,因为postdata 只读取的文件的数据,那像其他的Content-Disposition: form-data; name="Upload"等这些数据如何拼接进去呢?



手动上传抓包如图,但是万能框架只发送了图片的数据,所以根本就上传成功不了图片.如果我理解错了,能否给一个小小示例.谢谢.
QQ图片20150304162148.png


1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2015-3-4 16:31:05 | 显示全部楼层
PostDataType = PostDataType.FilePath,//默认为传入String类型,也可以设置PostDataType.Byte传入Byte类型数据

PostdataByte = System.Text.Encoding.Default.GetBytes("测试一下"),//如果PostDataType为Byte时要设置本属性的值

这教程里写的很清楚,咋都不看呢
发表于 2015-3-4 16:31:56 | 显示全部楼层
 楼主| 发表于 2015-3-4 16:53:26 | 显示全部楼层
PostDataType 设置为 PostDataType = PostDataType.Byte 吗?

Postdata =System.Text.Encoding.Default.GetBytes( 前面字符串)+ System.Text.Encoding.Default.GetBytes(文件<这个文件需要用StreamReader读取出来>) + System.Text.Encoding.Default.GetBytes(后面字符串)  ?

这两教程我真看了很多次,关键我是分开看的,真没有把联系起来.我现在初步想法是这样,对吗?我先试试吧.
发表于 2015-3-4 16:55:09 | 显示全部楼层
StreamReader不用读,直接写路径,我里面会自动读

你看说明,你鼠标放上去都有说明的
 楼主| 发表于 2015-3-4 17:02:57 | 显示全部楼层
本帖最后由 chinaceo 于 2015-3-4 17:04 编辑

[C#] 纯文本查看 复制代码
 if (request.Method.Trim().ToLower().Contains("post"))
            {
                if (item.PostEncoding != null)
                {
                    postencoding = item.PostEncoding;
                }
                byte[] buffer = null;
                //写入Byte类型
                if (item.PostDataType == PostDataType.Byte && item.PostdataByte != null && item.PostdataByte.Length > 0)
                {
                    //验证在得到结果时是否有传入数据
                    buffer = item.PostdataByte;
                }//写入文件
                else if (item.PostDataType == PostDataType.FilePath && !string.IsNullOrWhiteSpace(item.Postdata))
                {
                    StreamReader r = new StreamReader(item.Postdata, postencoding);
                    buffer = postencoding.GetBytes(r.ReadToEnd());
                    r.Close();
                } //写入字符串
                else if (!string.IsNullOrWhiteSpace(item.Postdata))
                {
                    buffer = postencoding.GetBytes(item.Postdata);
                }
                if (buffer != null)
                {
                    request.ContentLength = buffer.Length;
                    request.GetRequestStream().Write(buffer, 0, buffer.Length);
                }
            }


但我在万能框架,只看到这些代码,如果直接填路径的话,不行的吧.PostDataType只能设置三种情况中的一种的.没有字符串与文件进行拼接的选项吧?
发表于 2015-3-4 17:04:50 | 显示全部楼层
同时只能有一种,你上面的逻辑是对的,我看错了,都转为Byte就行了,
发表于 2015-3-4 17:10:56 | 显示全部楼层
路过!!!!
回复

使用道具 举报

发表于 2015-3-4 19:20:13 | 显示全部楼层
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-12-19 20:39

© 2014-2021

快速回复 返回顶部 返回列表