我成功使用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"));
在我的意见中,有两种方法可以解决这个问题。
目前我读了这样的文件:
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。 :/
非常感谢!
答案 0 :(得分:1)
请勿将Excel文件视为String
。更改readFile
以将文件读入byte[]
,然后将其写入连接输出流。
答案 1 :(得分:0)
将内容类型设置为application / vnd.ms-excel,然后尝试