安卓视频上传错误?

发布于 2024-10-18 11:26:53 字数 4056 浏览 0 评论 0原文

我用它来将视频上传到 php 服务器,当我尝试上传图像时,它工作正常,但是当我尝试上传视频时,出现以下错误,

“02-22 18:22:35.588:错误/dalvikvm-heap(780): 14680278 字节分配内存不足。”

      ***

HttpURLConnection conn = null;
          DataOutputStream dos = null;
          DataInputStream inStream = null; 

          String exsistingFileName = "/sdcard/Video/dance.wmv";
          // Is this the place are you doing something wrong.
          String lineEnd = "\r\n";
          String twoHyphens = "--";
          String boundary =  "*****";
          int bytesRead, bytesAvailable, bufferSize;
          byte[] buffer;
          int maxBufferSize = 1*1024*1024;
          String responseFromServer = "";
          String urlString = "http://172.17.0.146/viddygo/upload.php";
          try
          {
           //------------------ CLIENT REQUEST

          Log.e("MediaPlayer","Inside second Method");
          FileInputStream fileInputStream = new FileInputStream(new File(exsistingFileName) );
           // open a URL connection to the Servlet
           URL url = new URL(urlString);
           // Open a HTTP connection to the URL
           conn = (HttpURLConnection) url.openConnection();
           // Allow Inputs
           conn.setDoInput(true);
           // Allow Outputs
           conn.setDoOutput(true);
           // Don't use a cached copy.
           conn.setUseCaches(false);
           // Use a post method.
           conn.setRequestMethod("POST");
           conn.setRequestProperty("Connection", "Keep-Alive");

           conn.setRequestProperty("Content-Type", "multipart/form-data;boundary="+boundary);
           dos = new DataOutputStream( conn.getOutputStream() );
           dos.writeBytes(twoHyphens + boundary + lineEnd);
           dos.writeBytes("Content-Disposition: form-data; name=\"uploadedfile\";filename=\"" + exsistingFileName +"\"" + lineEnd);
           dos.writeBytes(lineEnd);
           Log.e("MediaPlayer","Headers are written");
           // create a buffer of maximum size
           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);
           while (bytesRead > 0)
           {
            dos.write(buffer, 0, bufferSize);
            bytesAvailable = fileInputStream.available();
            bufferSize = Math.min(bytesAvailable, maxBufferSize);
            bytesRead = fileInputStream.read(buffer, 0, bufferSize);
           }
           // send multipart form data necesssary after file data...
           dos.writeBytes(lineEnd);
           dos.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd);
           BufferedReader in = new BufferedReader(
                        new InputStreamReader(
                           conn.getInputStream()));
                String inputLine;

                while ((inputLine = in.readLine()) != null) 
                    tv.append(inputLine);



           // close streams
           Log.e("MediaPlayer","File is written");
           fileInputStream.close();
           dos.flush();
           dos.close();
          }
          catch (MalformedURLException ex)
          {
               Log.e("MediaPlayer", "error: " + ex.getMessage(), ex);
          }
          catch (IOException ioe)
          {
               Log.e("MediaPlayer", "error: " + ioe.getMessage(), ioe);
          }
          //------------------ read the SERVER RESPONSE
          try {
                inStream = new DataInputStream ( conn.getInputStream() );
                String str;

                while (( str = inStream.readLine()) != null)
                {
                     Log.e("MediaPlayer","Server Response"+str);
                }
                inStream.close();
          }
          catch (IOException ioex){
               Log.e("MediaPlayer", "error: " + ioex.getMessage(), ioex);
          }

任何人都可以提出一些解决此问题的想法。

I use this to upload the video to php server, when i try to upload the image ,it was working fine, but when i tried to upload the Video the following error occur,

"02-22 18:22:35.588: ERROR/dalvikvm-heap(780): Out of memory on a 14680278-byte allocation."

      ***

HttpURLConnection conn = null;
          DataOutputStream dos = null;
          DataInputStream inStream = null; 

          String exsistingFileName = "/sdcard/Video/dance.wmv";
          // Is this the place are you doing something wrong.
          String lineEnd = "\r\n";
          String twoHyphens = "--";
          String boundary =  "*****";
          int bytesRead, bytesAvailable, bufferSize;
          byte[] buffer;
          int maxBufferSize = 1*1024*1024;
          String responseFromServer = "";
          String urlString = "http://172.17.0.146/viddygo/upload.php";
          try
          {
           //------------------ CLIENT REQUEST

          Log.e("MediaPlayer","Inside second Method");
          FileInputStream fileInputStream = new FileInputStream(new File(exsistingFileName) );
           // open a URL connection to the Servlet
           URL url = new URL(urlString);
           // Open a HTTP connection to the URL
           conn = (HttpURLConnection) url.openConnection();
           // Allow Inputs
           conn.setDoInput(true);
           // Allow Outputs
           conn.setDoOutput(true);
           // Don't use a cached copy.
           conn.setUseCaches(false);
           // Use a post method.
           conn.setRequestMethod("POST");
           conn.setRequestProperty("Connection", "Keep-Alive");

           conn.setRequestProperty("Content-Type", "multipart/form-data;boundary="+boundary);
           dos = new DataOutputStream( conn.getOutputStream() );
           dos.writeBytes(twoHyphens + boundary + lineEnd);
           dos.writeBytes("Content-Disposition: form-data; name=\"uploadedfile\";filename=\"" + exsistingFileName +"\"" + lineEnd);
           dos.writeBytes(lineEnd);
           Log.e("MediaPlayer","Headers are written");
           // create a buffer of maximum size
           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);
           while (bytesRead > 0)
           {
            dos.write(buffer, 0, bufferSize);
            bytesAvailable = fileInputStream.available();
            bufferSize = Math.min(bytesAvailable, maxBufferSize);
            bytesRead = fileInputStream.read(buffer, 0, bufferSize);
           }
           // send multipart form data necesssary after file data...
           dos.writeBytes(lineEnd);
           dos.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd);
           BufferedReader in = new BufferedReader(
                        new InputStreamReader(
                           conn.getInputStream()));
                String inputLine;

                while ((inputLine = in.readLine()) != null) 
                    tv.append(inputLine);



           // close streams
           Log.e("MediaPlayer","File is written");
           fileInputStream.close();
           dos.flush();
           dos.close();
          }
          catch (MalformedURLException ex)
          {
               Log.e("MediaPlayer", "error: " + ex.getMessage(), ex);
          }
          catch (IOException ioe)
          {
               Log.e("MediaPlayer", "error: " + ioe.getMessage(), ioe);
          }
          //------------------ read the SERVER RESPONSE
          try {
                inStream = new DataInputStream ( conn.getInputStream() );
                String str;

                while (( str = inStream.readLine()) != null)
                {
                     Log.e("MediaPlayer","Server Response"+str);
                }
                inStream.close();
          }
          catch (IOException ioex){
               Log.e("MediaPlayer", "error: " + ioex.getMessage(), ioex);
          }

can anyone suggest some idea to solve this.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

能否归途做我良人 2024-10-25 11:26:53

我认为在后续行中发生了错误,因为当您写入时 DataOutputStream 大小超出了虚拟机预算

dos.write(缓冲区, 0, bufferSize);

I think error happened in follow line because DataOutputStream size is exceeds VM budget when you write

dos.write(buffer, 0, bufferSize);

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文