首页 新闻 会员 周边 捐助

一个上传问题,弄了三天了,没有结果,希望朋友们来点拔一下

0
悬赏园豆:40 [已解决问题] 解决于 2015-05-15 12:29

问题是这样的,在浏览器当中是使用swfupload这个插件上传东西的,且完全是可以的,如下图:

上传时浏览器网络包截图如下:

现在的项目需求是,我要直接用程序来上传文件,并且获取返回后的文件名,但上传的时候出了问题,总是提示上传不成功,原因未知

我用程序上传时代码如下:

结果如下:

 

上传前已经模拟登陆了,所以肯定不是没登陆的问题,Cookie值也都加上了,还不行,弄了两天,弄的我精疲力尽的,各位朋友们你们有这样的经历吗,或有什么好的方法吗?

用如下代码上传同样不成功,总之弄的蛋疼的

高明无思的主页 高明无思 | 初学一级 | 园豆:6
提问于:2015-05-14 19:47
< >
分享
最佳答案
0

我们目前实际使用的服务端读取文件上流的C#代码如下:

private Stream GetPostedFileSteam()
{
    if (Request.Browser.Browser == "IE"
        && System.Web.HttpContext.Current.Request.Files != null
        && System.Web.HttpContext.Current.Request.Files.Count > 0)
    {
        var postedFile = System.Web.HttpContext.Current.Request.Files[0];
        _mimeType = postedFile.ContentType;
        return postedFile.InputStream;
    }
    else
    {
        return Request.InputStream;
    }
}
收获园豆:40
dudu | 高人七级 |园豆:30778 | 2015-05-14 20:03

额,这问题我感觉是对面的服务器并没有读到我上传的流,对方服务器是java的,也不是我能控制的,我还在猜想,是不是编码的问题。

虽然这并不是我想要的,但你是个好同志,上个问题就是你回答的。

高明无思 | 园豆:6 (初学一级) | 2015-05-14 20:59

@高明无思: 不好意思,之前弄错了。通过程序向另外的服务器上传文件,我们实际使用的代码是这样的:

var request = WebRequest.Create(url);
request.Method = "post";
using (var requestStream = request.GetRequestStream())
{
    var bits = file.bits;
    requestStream.Write(bits, 0, bits.Length);

    using (var response = request.GetResponse())
    {
        using (var sr = new StreamReader(response.GetResponseStream()))
        {
            //...
        }
    }
}
dudu | 园豆:30778 (高人七级) | 2015-05-14 21:10

解决这样的问题,最有效的方法就是用Wireshark进行抓包

dudu | 园豆:30778 (高人七级) | 2015-05-14 21:16

@dudu: 明天试试你的思路,今天累的,闹不动了

高明无思 | 园豆:6 (初学一级) | 2015-05-14 21:20

@dudu: 今天早天想清楚了,就像我昨天猜的,服务器未收到文件,原来是需要加上那个name属性才行。

thank you all the same!

高明无思 | 园豆:6 (初学一级) | 2015-05-15 12:28

@高明无思: 豆豆你就你了,反正也没人来回答

高明无思 | 园豆:6 (初学一级) | 2015-05-15 12:30
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册