OutputStream dos = new DataOutputStream(conn.getOutputStream()); // 乱码
问题 可以试下 PrintWriter out = new PrintWriter(new // OutputStreamWriter(connection.getOutputStream(),"utf-8")); dos = new DataOutputStream(conn.getOutputStream()); int bytesRead, bytesAvailable, bufferSize; byte[] buffer; int maxBufferSize = IO_BUFFER_SIZE; String tem = ""; if(files!=null) for (Map.Entry<String, File> entry : files.entrySet()){ // 分隔符开头 dos.writeBytes(TWO_HYPHENS + boundary + LINEND); // create a buffer of maximum size FileInputStream fileInputStream = new FileInputStream(entry.getValue()); bytesAvailable = fileInputStream.available(); bufferSize = Math.min(bytesAvailable, maxBufferSize); buffer = new byte[bufferSize]; // read file and write it into form... bytesRead = fileInputStream.read(buffer, 0, bufferSize); tem = entry.getValue().getName(); dos.writeBytes("Content-Disposition:form-data;name=\""+entry.getKey()+"\";"+ "filename=\""); dos.writeUTF(tem);// 中文的文件名使用这里 dos.writeBytes("\"" + LINEND); dos.writeBytes("Content-Type:image/jpg" + LINEND + LINEND);//类型的判断暂时不处理 while (bytesRead > 0) { dos.write(buffer, 0, bufferSize); bytesAvailable = fileInputStream.available(); bufferSize = Math.min(bytesAvailable, maxBufferSize); bytesRead = fileInputStream.read(buffer, 0, bufferSize); } // close streams fileInputStream.close(); dos.writeBytes(LINEND); } // http 结束符 dos.writeBytes(TWO_HYPHENS + boundary + TWO_HYPHENS); dos.writeBytes(LINEND); dos.flush(); dos.close(); // 返回类型 String responseType = conn.getHeaderField("Content-Type"); // 正常返回而且必须为json类型 if (conn.getResponseCode() == HttpURLConnection.HTTP_OK && responseType != null && responseType.indexOf(HTTP_JSON_TYPE) >= 0) { responseType = (convertStreamToString(conn.getInputStream())); } else { responseType = "{}"; } try{conn.disconnect();}catch(Exception e){} return new JSONObject(responseType); }