无法使用HttpURLConnection上传Excel文件

时间:2012-09-11 14:27:35

标签: java io httpurlconnection xls

成功使用HttpURLConnection上传 * .txt文件。现在我的任务是更改上传每个文件类型的程序。我尝试使用 .xls文件 我的程序。文件放在服务器上,但内容不可读。

就像你在这里看到的那样:

  

AAA¡±á>þÿ   Å'¸äÌÌÌS   Sheet1Sheet2Sheet3Worksheets4 $â,þÿ3ÃâÅ|øùââ€〜+'³Ù0Å“8Å'@ x„äMicrosoft CorporationMicrosoft Excel@â€Ã¸(º»þÿ3à…ŸòùOh«‘+'³Ù0Ëœ8Å’@x“MicrosoftCorporationMicrosoft Excel @†ø(»Ì�á°Ãâ\ pMicrosoft Corporation

这是我的代码段:

    HttpURLConnection urlConn = (HttpURLConnection) new URL(testdocumentURL).openConnection(); 
    urlConn.setRequestMethod("POST");
    urlConn.setRequestProperty("X-Method-Override", "PUT");     
    urlConn.setRequestProperty("Content-Type", "text/xml"); 
    urlConn.setRequestProperty("Authorization", "Basic "+ Client.getPassword());
    urlConn.setUseCaches(false);
    urlConn.setDoInput(true);
    urlConn.setDoOutput(true);
    urlConn.setFollowRedirects(false);
    urlConn.setRequestProperty("Slug", "Connectiontest/test.xls"); 
    String write = readFile(test.xls);
    urlConn.setRequestProperty("Content-Length","" + write.length());
    urlConn.getOutputStream().write(write.getBytes("UTF8"));

在我的意见中,有两种方法可以解决这个问题。

  1. 更改.write的输出(write.getBytes(“UTF8”))
  2. 更改输入
  3. 目前我读了这样的文件:

        readFile(String test){
        BufferedReader reader = new BufferedReader(new FileReader(test));
        String line = null;
        StringBuilder stringBuilder = new StringBuilder();
        String ls = System.getProperty("line.separator");
    
        while ((line = reader.readLine()) != null) {
            stringBuilder.append(line);
            stringBuilder.append(ls);
        }
        reader.close();
        return stringBuilder.toString();
        }
    

    我尝试以这种方式更改RequestProperty():

    connection.setRequestProperty("content-type", "multipart/form-data");
    

    connection.setRequestProperty("content-type", "application/vnd.ms-excel");
    

    有人知道上传这样的.xls文件吗?我老板说,我必须优先 HttpURLConnector。 :/

    非常感谢!

2 个答案:

答案 0 :(得分:1)

请勿将Excel文件视为String。更改readFile以将文件读入byte[],然后将其写入连接输出流。

答案 1 :(得分:0)

将内容类型设置为application / vnd.ms-excel,然后尝试