1
マイコード:アップロードファイル
public static String newName =""; //the traditional Chinese file name
public static String uploadFile =""; //the file path contain traditional Chinese
public static String ActionUrl =""; //the server
public static void upload() {
String end = "\r\n";
String twoHyphens = "--";
String boundary = "*****";
try {
URL url = new URL(ActionUrl);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setDoInput(true);
con.setDoOutput(true);
con.setUseCaches(false);
con.setRequestMethod("POST");
con.setRequestProperty("Connection", "Keep-Alive");
con.setRequestProperty("Accept", "text/*");
con.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary);
DataOutputStream ds = new DataOutputStream(con.getOutputStream());
ds.writeBytes(twoHyphens + boundary + end);
ds.writeBytes("Content-Disposition: form-data;" + "name=\"folder\"" + end + end + "/mnt/HD/HD_a2/test/" + end);
ds.writeBytes(twoHyphens + boundary + end);
ds.writeBytes("Content-Disposition: form-data;" + "name=\"Filedata\"; filename=\"" + newName + "\"" + end);
ds.writeBytes(end);
FileInputStream fStream = new FileInputStream(uploadFile);
int bufferSize = 1024;
byte[] buffer = new byte[bufferSize];
int length = -1;
while((length = fStream.read(buffer)) != -1) {
ds.write(buffer, 0, length);
}
ds.writeBytes(end);
ds.writeBytes(twoHyphens + boundary + twoHyphens + end);
fStream.close();
ds.flush();
InputStream is = con.getInputStream();
int ch;
StringBuffer b = new StringBuffer();
while((ch = is.read()) != -1) {
b.append((char)ch);
}
System.out.println("UPLOAD" + "SUCCESS");
ds.close();
}
catch(Exception e) {
e.printStackTrace();
}
}
これは、ファイルの成功をアップロードし、それが文字化けしたファイル名が表示されます。 変更方法
どちらのファイル名は(おそらくUTF-8)、または受信サーバはその文字で入力データを処理するために知っていない、予想される文字セットで提供されていませんセット。ファイル名を送信しているときにwriteBytesの代わりにwriteUTFを使用することもできますが、実際のUTF-8をそのように書くのではなく、変更されたUTF-8(http ://docs.oracle.com/javase/6/docs/api/java/io/DataInput.html#modified-utf-8) - 変更されたUTF-8が実際のUTF-8と異なる場合、サーバーは不平を言う。 –
なぜDataOutputStreamを使用していますか?なぜあなたはそれがwriteBytesを介して中国語のテキストで正しいことをすると思いますか? – bmargulies
それでは、どうすればいいですか? – brian