苏飞论坛

标题: 求一个上传 excel 的例子【有偿 30元】 [打印本页]

作者: stefan    时间: 2018-3-20 00:18
标题: 求一个上传 excel 的例子【有偿 30元】
本帖最后由 stefan 于 2018-3-20 00:24 编辑

请各位大神帮帮忙,想通过 httphelper 上传excel文件,尝试了很多次都失败了。。。
参考了这个,但是还是不太明白 http://www.sufeinet.com/thread-8073-1-1.html
主要是 excel 怎么转换成 byte 数组呢。





作者: 站长苏飞    时间: 2018-3-20 08:24
直接读文件转成数组就行了。
框架里有这个方法
【HttpHelper万能框架教程】- POST文件数据
http://www.sufeinet.com/thread-9994-1-1.html
(出处: 苏飞论坛)


[C#] 纯文本查看 复制代码
//要Post的数据
string postfile = @"D:\postdata.txt";
//将Post数据转为字节数组

//创建Httphelper对象
HttpHelper http = new HttpHelper();
//创建Httphelper参数对象
HttpItem item = new HttpItem()
{
    URL = "http://www.sufeinet.com",//URL     必需项   
    Method = "post",//URL     可选项 默认为Get   
    ContentType = "application/x-www-form-urlencoded",//返回类型    可选项有默认值
    PostDataType = PostDataType.FilePath,
    Postdata = postfile
};
//请求的返回值对象
HttpResult result = http.GetHtml(item);
//获取请请求的Html
string html = result.Html;
//获取请求的Cookie
string cookie = result.Cookie;

作者: stefan    时间: 2018-3-20 09:31
飞大厉害,非常感谢。

真是被感动的痛哭流涕……
作者: stefan    时间: 2018-3-20 09:32
刚打算往充值30元积分的,发现充值功能不可用,那就等发工资了回头来开通个年费(目前手头紧张哈)
作者: stefan    时间: 2018-3-20 09:34
飞大,好像论坛上传头像的功能也不能用了
作者: 站长苏飞    时间: 2018-3-20 14:33
stefan 发表于 2018-3-20 09:34
飞大,好像论坛上传头像的功能也不能用了

我取消了,头像不重要,DZ有漏洞,容易被黑客利用
作者: 站长苏飞    时间: 2018-3-20 14:33
楼主常来论坛就行了,充不充的无所为
作者: stefan    时间: 2018-3-21 02:06
本帖最后由 stefan 于 2018-3-21 02:09 编辑

老大  蛮烦在帮我看一下。下面是我的请求的代码。我服务器端是 php 写的,我打印 $_FILE 是空的,好奇怪,收不到上传的文件数据。

[C#] 纯文本查看 复制代码
HttpHelper http = new HttpHelper();
            
HttpItem item = new HttpItem()
{
    URL = url,//URL     必需项   
    Method = "post",
    IsToLower = false,//得到的HTML代码是否转成小写     可选项默认转小写   
    Cookie = header.Cookies,//字符串Cookie     可选项   
    Referer = header.Referer,//来源URL     可选项   
    PostDataType =  PostDataType.FilePath,
    Postdata = "C:\Users\stefan\Documents\workspace\bin\Debug\Cache\a.xls",//Post数据     可选项GET时不需要写   
    Timeout = 100000,//连接超时时间     可选项默认为100000   
    ReadWriteTimeout = 30000,//写入Post数据超时时间     可选项默认为30000   
    UserAgent = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)",//用户的浏览器类型,版本,操作系统     可选项有默认值   
    ContentType = "multipart/form-data; charset=utf-8",//返回类型    可选项有默认值   
    Allowautoredirect = header.Allowautoredirect,//是否根据301跳转     可选项   
    //CerPath = "d:\123.cer",//证书绝对路径     可选项不需要证书时可以不写这个参数   
    //Connectionlimit = 1024,//最大连接数     可选项 默认为1024   
    ProxyIp = header.ProxyIp,//代理服务器ID     可选项 不需要代理 时可以不设置这三个参数   
    //ProxyPwd = "123456",//代理服务器密码     可选项   
    //ProxyUserName = "administrator",//代理服务器账户名     可选项   
    ResultType = header.ResultType
};

HttpResult result = http.GetHtml(item);

作者: stefan    时间: 2018-3-21 02:07
确实收到请求了,但没收到发送的文件。 是我哪儿错了吗
作者: stefan    时间: 2018-3-21 02:12
另外 fiddler 抓不到 httphelper 发送的包,正常吗。
作者: stefan    时间: 2018-3-21 09:54
@sufeinet 苏大,求帮忙指点一下
作者: 站长苏飞    时间: 2018-3-21 10:28
先抓包看看
作者: stefan    时间: 2018-3-21 12:51
本帖最后由 stefan 于 2018-3-21 12:56 编辑

@sufeinet
这是我发送的请求:

[C#] 纯文本查看 复制代码
HttpHelper http = new HttpHelper();
            
HttpItem item = new HttpItem()
{
    URL = url,//URL     必需项   
    Method = "post",
    IsToLower = false,//得到的HTML代码是否转成小写     可选项默认转小写   
    Cookie = header.Cookies,//字符串Cookie     可选项   
    Referer = header.Referer,//来源URL     可选项   
    PostDataType =  PostDataType.FilePath,
    Postdata = "C:\Users\stefan\Documents\workspace\bin\Debug\Cache\a.xls",//Post数据     可选项GET时不需要写   
    Timeout = 100000,//连接超时时间     可选项默认为100000   
    ReadWriteTimeout = 30000,//写入Post数据超时时间     可选项默认为30000   
    UserAgent = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)",//用户的浏览器类型,版本,操作系统     可选项有默认值   
    ContentType = "multipart/form-data; charset=utf-8",//返回类型    可选项有默认值   
    Allowautoredirect = header.Allowautoredirect,//是否根据301跳转     可选项   
    //CerPath = "d:\123.cer",//证书绝对路径     可选项不需要证书时可以不写这个参数   
    //Connectionlimit = 1024,//最大连接数     可选项 默认为1024   
    ProxyIp = header.ProxyIp,//代理服务器ID     可选项 不需要代理 时可以不设置这三个参数   
    //ProxyPwd = "123456",//代理服务器密码     可选项   
    //ProxyUserName = "administrator",//代理服务器账户名     可选项   
    ResultType = header.ResultType
};

HttpResult result = http.GetHtml(item);




下面是抓包的:

[C#] 纯文本查看 复制代码
POST http://service.xxxxx.com/v1/service/upload HTTP/1.1
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjRkZjc3M2FjYjc4ZTI2NDEwM2ZkNTU3YjgzMmNhOGI3MDc5MmQ2ZWRlNjcxNjdiYzRkYzVjMzlhNWI5YjAwN2FlZmI1YTVmYmY3MTJiN2UwIn0.eyJhdWQiOiIyIiwianRpIjoiNGRmNzczYWNiNzhlMjY0MTAzZmQ1NTdiODMyY2E4YjcwNzkyZDZlZGU2NzE2N2JjNGRjNWMzOWE1YjliMDA3YWVmYjVhNWZiZjcxMmI3ZTAiLCJpYXQiOjE1MjE2MDc1NzUsIiI6MTUyMTYwNzU3NSwiZXhwIjoxNTUzMTQzNTc1LCJzdWIiOiIxNSIsInNjb3BlcyI6W119.K8LgT3AhybetI6so0LISet2GyoV7lQZ4jJuQZGct80F14zkKiBl61iq9uyc5-HcucZIqIBkoiEmzKB-1qw5kwtTJAL87qEiPS46q10eI0qT08DFZDORnYBrh0nRJL_9IOpkuvGa_qPQl1K8EE_kH0U0Kh0tX1n4GlNcqs1zUyDrE4SGNk_UOmRvJamlBlfW2C6VJAEGaAwOYYZCI4TA0Gy8bGUr3HWTfrq9pcgMzgU9bCjQmlnMVCg3cBpoutFSEAxRZbQ7JT8qpaAnAfl123YrJS_sMKlQhqhE9DzjOr-17WR0u5Wlkrd6dXA6iDiYoVVuYjnbNbWUsxW-8Cxeng5an5iRl6w_od6FMnJVU3pSnkTbHSiq5YNy2CJcEP47lTESAlbLwTsijw3WOBRire3LksX88rQDfEQWImQxyiQYy-RymyYguCSH7WPY1udOobAmmspUsYsICzw1kOEOrredyk7WJRiMjDw7cyONUdruZ14ziPaMSq8nGSj7XNzIgSvuZHVhFpyCFAsIpqZKFib_eYTPV9PK3N3s5WRVbAJqO3p4aCA8PDBDHm8wy2EA-6Hsz9x1_7UREBGwk2Y-0ocms8x-srOjD2VlXbf9c16LfRos6svjdMK1yGF5TeV7pY4314Hf7qD53RQr9LZcWX37MSu4mJj0-uXU1SdQ_rHk
x-appid: 0
Accept: text/html, application/xhtml+xml, */*
Content-Type: multipart/form-data; charset=utf-8;
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)
Host: service.pigtk.com
Content-Length: 31618

   ??               >  ?                       >          ?      ?      =                                                                                                                                                                                                                                                                                                                                                                                                                                                              ??       ? ??   ?  \ p Java Excel API v2.6.12                                                                                          B  ?a   =  ?              ?   ?   =  h\:?8      X@    ?   "       ?   ?   1  ?   ?      A r i a l 1  ?   ?      A r i a l 1  ?   ?      A r i a l 1  ?   ?      A r i a l   ? 0 
? 0 . 0 0 ?     ?   ?       ??    ?   ?       ??    ?   ?       ??    ?   ?       ??    ?   ?       ??    ?   ?       ??     ?   ?       ??     ?   ?       ??     ?   ?       ??     ?   ?       ??     ?   ?       ??     ?   ?       ??     ?   ?       ??     ?   ?       ??     ?   ?       ??         |        ??  + ?   ?       ??  ) ?   ?       ??  , ?   ?       ??  * ?   ?       ??           ?   ?       ??   ?    |        ??   ?    |        ??   ?   ?   ?    ?     ?   `  ?
#    P a g e 1 ?  , ?7?  ?   R ^ e   p Q e  FU T Oo` FU TI D   c g e e @b^\ ^   FU Tpe FU TUS N   US r`   US{| W 6eeQ k s Rb k s  N>kё   He g  0O  ~ {ё     0O6eeQ  ~ { e  cOё k s cOёё   e?  k s e? ё ? e? {| W b Ns^ S  ,{        N e
g Reg n   US S {| v
T y eg n ZSOI D  eg n ZSO

下面乱码的就是 excel 的数据吧。 是我content-type 设置错误了吗。或者说我后台该怎么接收到这这个excel文件呢。请苏大帮忙指点下,谢谢了。


作者: Loman源    时间: 2018-3-24 11:00
multipart/form-data 的POSTDATA不应该是这样吗

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

"hello world"
------WebKitFormBoundaryIZDrYHwuf2VJdpHw
Content-Disposition: form-data; name="file"; filename="temp.png"
Content-Type: image/png

.PNG
.
...
IHDR...
..........Y../..,+|.$aIk.v...G?...P.P,,...m..e.2....v.7.        pHYs...%...%.IR$....|IDAT(.cTT....................:.?.......}.(.Pd`A..V...L...?..#.....4.o..LS.....W.d.?...A8..LS...(.u.......D.b......b.....o&..;..<.1......IEND.B`.
------WebKitFormBoundaryIZDrYHwuf2VJdpHw
Content-Disposition: form-data; name="submit"

submit
------WebKitFormBoundaryIZDrYHwuf2VJdpHw--
作者: stefan    时间: 2018-4-3 17:42
Loman源 发表于 2018-3-24 11:00
multipart/form-data 的POSTDATA不应该是这样吗

------WebKitFormBoundaryIZDrYHwuf2VJdpHw

谢谢,使用httpclient搞定啦




欢迎光临 苏飞论坛 (http://www.sufeinet.com/) Powered by Discuz! X3.4