首页 新闻 搜索 专区 学院

有关文件上传问题

0
悬赏园豆:50 [已解决问题] 解决于 2015-03-04 13:24

对Java研究不深,各位路过的园友帮看一下。

先上代码:

        HttpClient client= HttpClients.createDefault(); 
        HttpPost post = new HttpPost(url); 
        MultipartEntityBuilder builder = MultipartEntityBuilder.create().addPart("file", new FileBody(file));
        builder.seContentType(ContentType.DEFAULT_BINARY);
        builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);        
        long length = file.length();
        HttpEntity entity = builder.build();
        post.setEntity(entity);
        HttpResponse response = client.execute(post);
        if (response.getStatusLine().getStatusCode()==200) {
            System.out.println("Success");
        } 

通过HttpClient上传一个问题,服务器接口使用的是WCF

         [WebInvoke(
            Method = "POST",
            UriTemplate ="/file/add",
            BodyStyle = WebMessageBodyStyle.Bare
            )]
        void UploadFile(Stream stream);

问题如下:

我选择上传的文件大小为 2109952

但生成后HttpEntity对象内容长度变为了 2110141 ,对这块不熟悉,猜测可能写入了头信息等

在WCF这端,我收到的字节长度为 2110145 。

我怎么才能得到源文件的流? 大脑不够用了已经。

谢谢园友们。

Rommend2022的主页 Rommend2022 | 初学一级 | 园豆:38
提问于:2015-03-03 22:20
< >
分享
最佳答案
1

UploadFile(Stream stream);这个方法的参数stream就是上传的原始内容,WCF不会针对该参数添加任何额外信息。你可以自己写个form表单提交到改操作进行测试(我测试过)。我现在这里网络原因看不到你那张截图(网络屏蔽)。不知道你在处理流的时候有没有每次只写入已读取到的长度,而不是buffer的长度?这是最常见的原因。

收获园豆:50
Tony二师弟 | 菜鸟二级 |园豆:204 | 2015-03-04 13:02
其他回答(1)
0

谢谢园友的回答,问题我已经解决,服务端是没有问题的。

Rommend2022 | 园豆:38 (初学一级) | 2015-03-04 13:24

是什么原因啊

支持(0) 反对(0) Tony二师弟 | 园豆:204 (菜鸟二级) | 2015-03-06 10:29
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册