Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 写入服务器时出错_Java_Post_File Upload_Ioexception - Fatal编程技术网

Java 写入服务器时出错

Java 写入服务器时出错,java,post,file-upload,ioexception,Java,Post,File Upload,Ioexception,我正在使用Java程序“POST”方法将文件从一台服务器上载到另一台服务器。但我正在变得异常 java.io.IOException: Error writing to server at sun.net.www.protocol.http.HttpURLConnection.writeRequests(HttpURLConnection.java:582) at sun.net.www.protocol.http.HttpURLConnection.writeRequests(

我正在使用Java程序“POST”方法将文件从一台服务器上载到另一台服务器。但我正在变得异常

java.io.IOException: Error writing to server
    at sun.net.www.protocol.http.HttpURLConnection.writeRequests(HttpURLConnection.java:582)
    at sun.net.www.protocol.http.HttpURLConnection.writeRequests(HttpURLConnection.java:594)
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1216)
    at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:379)
    at com.test.rest.HttpURLConnectionExample.TransferFile(HttpURLConnectionExample.java:107)
    at com.test.rest.HttpURLConnectionExample.main(HttpURLConnectionExample.java:44)
我有其他方法可以通过服务器进行身份验证。将从下面的代码中调用。当我从服务器得到响应时,我得到的是上述异常。要将文件传输到服务器,我在下面编写了一个方法。我的示例代码如下:

public static void TransferFile(){
        String urlStr = "http://192.168.0.8:8600/audiofile?path=1/622080256/virtualhaircut.mp3";
        File tempFile = new File("/home/MyPath/Workspace/Sample/virtualhaircut.mp3");
        BufferedWriter br=null;
        HttpURLConnection conn = null;
        URL url;
        try {
            url = new URL(urlStr);
            AuthenticationUser();
            conn = (HttpURLConnection) url.openConnection();
            conn.setDoOutput(true);
            conn.setRequestMethod("POST");

            conn.setRequestProperty("Content-Type", new MimetypesFileTypeMap().getContentType(tempFile.getName()));
        } catch (MalformedURLException e1) {
            System.out.println("Malformed");
            e1.printStackTrace();
        } catch (ProtocolException e) {
            System.out.println("Protocol");
            e.printStackTrace();
        } catch (IOException e) {
            System.out.println("IO");
            e.printStackTrace();
        }

        System.out.println("line 69");


        FileInputStream fis;
        OutputStream fos;


        try {
            System.out.println("line 75");

                System.out.println("line 77");
                fis = new FileInputStream(tempFile);
                fos = conn.getOutputStream();
                byte[] buf = new byte[1024 * 2];
                int len = 0;
                System.out.println("line 80");
                while ((len = fis.read(buf)) > 0) {
                    fos.write(buf, 0, len);
                    System.out.println("line 85");
                }
                System.out.println("line 87");
                buf = null;
                fos.flush();
                fos.close();
                fis.close();

        }catch (FileNotFoundException e) {
            System.out.println("");
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        try {

            if (conn.getResponseCode() == 200) {
                System.out.println("here");

            }
        } catch (IOException e) {
            e.printStackTrace();
        }


    }

发生错误的原因可能是接收服务器关闭了连接,也可能是因为您的文件超出了大小限制。你用小文件测试过吗?

谢谢回复!!!对它正在上传小文件。但对于较大的文件大小,它给出了上述例外情况。重要的是,它在我的linux终端上使用curl命令。。。我不知道如何用我的java程序解决这个问题。这不是java程序的问题。这是服务器端的配置问题。顺便说一句,如果真的是这样,你介意接受这个答案吗?那么,对于这个,我必须做什么?服务器的配置文件中是否有任何属性?我必须在服务器上设置,我不是Http连接方面的专家,但您必须查看curl是否通过相同的POST方法发送,是否以相同的方式接收。我在网上为你找到了这个:希望对你有所帮助。你介意投票回答吗?感谢在我的情况下,在我设置了
connectionTimeout=“90000”max燕子大小=“-1”maxPostSize=“-1”
并多次发布之后,其中一个会成功。我不知道为什么。