Java 无法使用HttpURLConnection上载Excel文件

Java 无法使用HttpURLConnection上载Excel文件,java,io,httpurlconnection,xls,Java,Io,Httpurlconnection,Xls,我成功地使用HttpURLConnection上传*.txt文件。现在我的任务是更改上传每种文件类型的程序。我用.xls文件尝试了我的程序。文件放在服务器上,但内容不可读 就像你在这里看到的: 什么 ¸¸ÃŒŒŒŒŒŒS 表1表2表3工作表4美元,3美元™0Å“8Å@xèèèèèèèèèèèèèèèèèèèèèèèèè232™微软公司微软Excel(微软公司) 下面是我的代码片段: HttpURLConnection urlConn = (HttpURLConnection) new U

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

就像你在这里看到的:

什么 ¸¸ÃŒŒŒŒŒŒS 表1表2表3工作表4美元,3美元™0Å“8Å@
xèèèèèèèèèèèèèèèèèèèèèèèèè232™微软公司微软Excel(微软公司)

下面是我的代码片段:

    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"));
我认为有两种方法可以解决这个问题

  • 在.write(write.getBytes(“UTF8”))中更改输出
  • 更改输入
  • 目前我阅读的文件如下:

        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");
    

    有人知道像这样上传一个.xls文件吗?我必须更喜欢HttpURLConnector,我的老板说:/


    非常感谢!

    不要将Excel文件视为
    字符串
    。更改
    readFile
    将文件读入
    字节[]
    相反,然后将其写入连接输出流。

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

    嗨,克里斯,我已经尝试了不同的内容类型。无效:(嗨,David Grant,这是一个有用的建议。现在我在我的
    readFile()中使用了一个FileInputStream)
    我可以上传我想要的每种文件类型。谢谢巴德,救了我一天。这正是我的处境。
    connection.setRequestProperty("content-type", "application/vnd.ms-excel");