通过Http帖子上传的Android- Zip文件包括标题

时间:2012-11-27 18:06:05

标签: android upload zip

我使用以下代码将Android文件中的zip文件上传到某个位置。观察是: 1.在服务器上传的zip文件无法使用Windows资源管理器打开。 2. Winzip,7-zip和其他工具都可以打开服务器上传的zip。 3.直接从Android设备(通过adb)拉出的文件可以通过Windows资源管理器打开。 (意思是它没有腐败)。

我分析了上传zip的十六进制转储,发现它在开头包含了http标头。手动删除标题并重新保存它可以完成工作。看起来它们被发送到身体或整个标题部分被误解为身体的一部分。我无法避免这些标头,因为服务器脚本需要这些标头。

由于

服务器上的文件十六进制:-B8m4yaqs_DBT3duNEuQUqEqqIdnyHYXEtwW 内容处理:表格数据; NAME = “文件上传”;文件名= “crashLogs.ZIP” 内容类型:应用程序/ zip 内容传输编码:二进制

如何在没有标题保存的情况下上传Zip文件?

            HttpClient httpclient = new DefaultHttpClient();

            HttpPost postRequest;
            MultipartEntity reqEntity;
            FileBody fileBody;

            postRequest = new HttpPost(serverUrl);
            postRequest.addHeader("Content-Type", "application/zip");
            postRequest
                    .addHeader(
                            "X-BRB-Custom",
                            "veT14BAttolUAgiosgaultfOrTH93TAD30sag48feYbUlk45COInneBcaDegEARhowOfAYs10HELpsmump23");

            File zipFile = new File(Zip);
            try
            {
                reqEntity = new MultipartEntity();

                fileBody = new FileBody(zipFile, "application/zip");
                reqEntity.addPart("fileupload", fileBody);

                postRequest.setEntity(reqEntity);

                HttpResponse response = httpclient.execute(postRequest);

                if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK)
                {
                    httpclient.getConnectionManager().shutdown();
                    return deleteFiles();
                }

            }
            catch (UnsupportedEncodingException e)
            {
                e.printStackTrace();
            }
            catch (ClientProtocolException e)
            {
                e.printStackTrace();
            }
            catch (IOException e)
            {
                e.printStackTrace();
            }

            httpclient.getConnectionManager().shutdown();

            return false;

0 个答案:

没有答案