android在进行上传图片的时候 getOutPutStream报IOException?

public class Upload {

public static final String TAG = "Upload";
public static final String urlServer = "http://192.168.1.123:8081/door/v1/door/requestOpenDoor";
public static final String pathOfPicture = "/mnt/sdcard/Pictures/Screenshots/image.jpg";
static String lineEnd = "\r\n";


public static void upload() {
    Log.d(TAG, "upload begin");
    HttpURLConnection connection = null;
    DataOutputStream dos = null;
    FileInputStream fin = null;

    String boundary = "---------------------------265001916915724";

    int bytesAvailable, bufferSize, bytesRead;
    int maxBufferSize = 1 * 1024 * 512;
    byte[] buffer = null;

    try {
        Log.d(TAG, "try");
        URL url = new URL(urlServer);
        connection = (HttpURLConnection) url.openConnection();

        // 允许向url流中读写数据
        connection.setDoInput(true);
        connection.setDoOutput(true);
        connection.setUseCaches(true);

        // 启动post方法
        connection.setRequestMethod("POST");

        // 设置请求头内容
        connection.setRequestProperty("connection", "Keep-Alive");
        connection.setRequestProperty("Content-Type", "text/plain");

        // 伪造请求头
        connection.setRequestProperty("Content-Type",
                "multipart/form-data; boundary=" + boundary);

        // 在这里出异常了
        // 开始伪造POST Data里面的数据
        dos = new DataOutputStream(connection.getOutputStream());
        fin = new FileInputStream(pathOfPicture);

        Log.d(TAG, "开始上传images");
        // --------------------开始伪造上传images.jpg的信息-----------------------------------
        String fileMeta = "--"
                + boundary
                + lineEnd
                + "Content-Disposition: form-data; name=\"uploadedPicture\"; filename=\""
                + pathOfPicture + "\"" + lineEnd
                + "Content-Type: image/jpeg" + lineEnd + lineEnd;
        // 向流中写入fileMeta
        dos.write(fileMeta.getBytes());

        // 取得本地图片的字节流,向url流中写入图片字节流
        bytesAvailable = fin.available();
        bufferSize = Math.min(bytesAvailable, maxBufferSize);
        buffer = new byte[bufferSize];

        bytesRead = fin.read(buffer, 0, bufferSize);
        while (bytesRead > 0) {
            dos.write(buffer, 0, bufferSize);
            bytesAvailable = fin.available();
            bufferSize = Math.min(bytesAvailable, maxBufferSize);
            bytesRead = fin.read(buffer, 0, bufferSize);
        }
        dos.writeBytes(lineEnd + lineEnd);
        // --------------------伪造images.jpg信息结束-----------------------------------
        Log.d(TAG, "结束上传");

        // POST Data结束
        dos.writeBytes("--" + boundary + "--");

        // Server端返回的信息
        System.out.println("" + connection.getResponseCode());
        System.out.println("" + connection.getResponseMessage());

        if (dos != null) {
            dos.flush();
            dos.close();
        }
        Log.d(TAG,
                "upload success-----------------------------------------");
        System.out.println("上传成功");

    } catch (Exception e) {
        e.printStackTrace();
        Log.d(TAG, "upload fail");
        System.out.println("上传失败");
    }
}

}

你可以试试Volley,不用自己写Http请求这么麻烦的

单步调试好了,不然看不出哪里错了