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

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

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

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

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

楼主: jackliangs

[HttpHelper] 寻求POST上传图片的DEMO

[复制链接]
发表于 2016-8-31 11:54:26 | 显示全部楼层
图片是转成字节的,字节自然是看不到的,安我上面写的方法就可以你只需要将图片转为字节即可


1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
 楼主| 发表于 2016-8-31 12:01:24 | 显示全部楼层
光把图片转成字节应该还不行,我抓包出来的request还需要附带boundary上去的,这样服务器才知道上传的文件名是什么要存储的,如何把这段boundary合并提交上去呢?

------WebKitFormBoundarynBAqI6TyFak1jwN1
Content-Disposition: form-data; name="name"

TB20CICcXXXXXX8XpXXXXXXXXXX-907349826.png
------WebKitFormBoundarynBAqI6TyFak1jwN1
Content-Disposition: form-data; name="file"; filename="TB20CICcXXXXXX8XpXXXXXXXXXX-907349826.png"
Content-Type: image/png


------WebKitFormBoundarynBAqI6TyFak1jwN1--
发表于 2016-8-31 22:13:21 | 显示全部楼层
jackliangs 发表于 2016-8-31 12:01
光把图片转成字节应该还不行,我抓包出来的request还需要附带boundary上去的,这样服务器才知道上传的文件 ...

3楼已经给你示例,还弄不对?当然,我提供的只是上传方法,登录什么的不在其中。
发表于 2016-8-31 23:51:17 | 显示全部楼层
包头字符串转byte[]  包尾字符串转byte[]
包头byte[] +图片byte[]+包尾byte[]   post就可以
 楼主| 发表于 2016-9-1 15:11:33 | 显示全部楼层
按照各位提供的帖子,服务是始终返回文件名不能为空,应该是我参数没有拼对,麻烦苏飞帮忙看看吧
发表于 2016-9-1 15:18:32 | 显示全部楼层
你怎么写的代码?
 楼主| 发表于 2016-9-1 15:46:59 | 显示全部楼层
//上传图片
            #region 变量
            byte[] UploadBuffers = null;
            string BoundStr = "------WebKitFormBoundarynBAqI6TyFak1jwN1";
            StringBuilder UploadBuf = new StringBuilder();
            #endregion

            #region 头部数据
            UploadBuf.Append("content-type:multipart/form-data; boundary="+ BoundStr);
            byte[] HeadBytes = Encoding.ASCII.GetBytes(UploadBuf.ToString());
            #endregion

            #region 图片数据
            byte[] PicBytes = ImageToBytesFromFilePath(@"C:\Project\128.png");
            #endregion

            #region 尾部数据
            UploadBuf.Clear();
            UploadBuf.Append(BoundStr + "\r\n");
            UploadBuf.Append(@"Content-Disposition: form-data; name=""name""" + "\r\n\r\n\r\n");
            UploadBuf.Append("128.png" + "\r\n");
            UploadBuf.Append(BoundStr + "\r\n" + @"Content-Disposition: form-data; name=""file""; filename=""128.png""" + "\r\n");
            UploadBuf.Append("Content-Type: image/png" +"\r\n\r\n\r\n");
            UploadBuf.Append(BoundStr + "--");
            byte[] TailBytes = Encoding.ASCII.GetBytes(UploadBuf.ToString());
            #endregion

            #region 数组拼接
            UploadBuffers = ComposeArrays(HeadBytes, PicBytes);
            UploadBuffers = ComposeArrays(UploadBuffers, TailBytes);
            #endregion

            #region 上传
            item = new HttpItem()
            {
                URL = "https://stream.taobao.com/api/upload.api?appkey=tu&phone=false&folderId=172751275624965728&_input_charset=utf-8&watermark=false",
                Method = "POST",
                ContentType = "multipart/form-data; boundary=" + BoundStr.Substring(2),
                Referer = "https://stream.taobao.com/plugin.htm?appkey=tu&single=true&tab=list&pageSize=10&maxNum=-1&ver=1.0.0",
                PostDataType = PostDataType.Byte,
                Cookie = cookie,
                Encoding = Encoding.UTF8,
                PostdataByte = UploadBuffers
            };
            var result = http.GetHtml(item);
            #endregion
 楼主| 发表于 2016-9-1 15:49:34 | 显示全部楼层
我发现抓包回来BoundStr 每次都有变化,是不是这个原因?
 楼主| 发表于 2016-9-1 15:51:58 | 显示全部楼层
淘宝图片空间:tu.taobao.com
 楼主| 发表于 2016-9-1 15:54:58 | 显示全部楼层
现在服务器返回: {"total":0,"success":false,"status":0,"errorCode":"PARAMETER_ERROR","message":"file parameter invalid:文件不能为空"}
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

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

GMT+8, 2024-11-8 21:33

© 2014-2021

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