我成功地使用 HttpURLConnection 上传*.txt 文件。现在我的任务是更改上传每种文件类型的程序。我用.xls 文件尝试了我的程序。文件放在服务器上,但内容不可读。
就像你在这里看到的:
Ãá±á>þÿ Å'¸äÌÌÌS Sheet1Sheet2Sheet3Worksheets4 $€,þÿ3à …ŸòùOh«‘+'³Ù0Å“8Å'@
x„äMicrosoft CorporationMicrosoft Excel@â€Ã¸(º»þÿ3à …ŸòùOh«‘+'³Ù0Ëœ8Å’@
x„äMicrosoft公司Microsoft 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"));
在我看来,有两种方法可以解决这个问题。
- 在 .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 。:/
非常感谢!