问题是这样的,在浏览器当中是使用swfupload这个插件上传东西的,且完全是可以的,如下图:
上传时浏览器网络包截图如下:
现在的项目需求是,我要直接用程序来上传文件,并且获取返回后的文件名,但上传的时候出了问题,总是提示上传不成功,原因未知
我用程序上传时代码如下:
结果如下:
上传前已经模拟登陆了,所以肯定不是没登陆的问题,Cookie值也都加上了,还不行,弄了两天,弄的我精疲力尽的,各位朋友们你们有这样的经历吗,或有什么好的方法吗?
用如下代码上传同样不成功,总之弄的蛋疼的
我们目前实际使用的服务端读取文件上流的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; } }
额,这问题我感觉是对面的服务器并没有读到我上传的流,对方服务器是java的,也不是我能控制的,我还在猜想,是不是编码的问题。
虽然这并不是我想要的,但你是个好同志,上个问题就是你回答的。
@高明无思: 不好意思,之前弄错了。通过程序向另外的服务器上传文件,我们实际使用的代码是这样的:
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())) { //... } } }
解决这样的问题,最有效的方法就是用Wireshark进行抓包
@dudu: 明天试试你的思路,今天累的,闹不动了
@dudu: 今天早天想清楚了,就像我昨天猜的,服务器未收到文件,原来是需要加上那个name属性才行。
thank you all the same!
@高明无思: 豆豆你就你了,反正也没人来回答