2012-06-01 58 views
4

我上传大型视频到PHP服务器,该服务器崩溃的应用程序。上传大视频从Android PHP服务器崩溃应用

所以,我已经使用conn.setChunkedStreamingMode(MAXBUFFERSIZE);
但它给性反应:请求实体太大

服务器端视频的编码形式接受的,所以我用的Base64编码。

我使用JSON网络服务上传视频

uploadvideo(&userid,&video,&title,&description,&type) 

我已经搜索很多,但不能得到解决。 任何人能告诉我

http://www.coderzheaven.com/2012/03/29/uploading-audio-video-or-image-files-from-android-to-server/

http://www.mail-archive.com/[email protected]/msg92856.html

哪一个更好,以及如何添加参数?像DIS

try { 
    FileInputStream fileInputStream = new FileInputStream(myFile.getAbsolutePath());  //(new File(selectedPath)); 
    // 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.setChunkedStreamingMode(maxBufferSize); 
    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=\"userid\""+ lineEnd + lineEnd); 
    dos.writeBytes(strUserid+lineEnd); 

    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); 
    } 
    String encodeurl = Base64.encodeBytes(buffer); 

    dos.writeBytes(twoHyphens + boundary + lineEnd); 
    dos.writeBytes("Content-Disposition: form-data; name=\"video\""+ lineEnd + lineEnd); 
    dos.writeBytes(encodeurl+lineEnd); 

    dos.writeBytes(twoHyphens + boundary + lineEnd); 
    dos.writeBytes("Content-Disposition: form-data; name=\"title\""+ lineEnd + lineEnd); 
    dos.writeBytes(strVideoName+lineEnd); 

    dos.writeBytes(twoHyphens + boundary + lineEnd); 
    dos.writeBytes("Content-Disposition: form-data; name=\"description\""+ lineEnd + lineEnd); 
    dos.writeBytes(strVideoComments+lineEnd); 

    dos.writeBytes(twoHyphens + boundary + lineEnd); 
    dos.writeBytes("Content-Disposition: form-data; name=\"type\""+ lineEnd + lineEnd); 
    dos.writeBytes(type+lineEnd); 

    responseMsg = conn.getResponseMessage(); 
    // close streams 
    System.out.println("Debug File is written"); 
    fileInputStream.close(); 
    dos.flush(); 
    dos.close(); 
    } 
    catch (MalformedURLException ex) 
    { 
     System.out.println(("Debug Error: " + ex.getMessage())); 
    } 
    catch (IOException ioe) 
    { 
     System.out.println("Debug Error: " + ioe.getMessage()); 
    } 
    //------------------ read the SERVER RESPONSE 
    try { 
     inStream = new DataInputStream (conn.getInputStream()); 
     System.out.println("Input Stream :: "+inStream.toString()); 
     String str; 

     while ((str = inStream.readLine()) != null) 
     { 
      System.out.println("Debug Server Response "+str); 
     } 
     inStream.close(); 

    } 
    catch (IOException ioex){ 
     System.out.println("Debug Error: " + ioex.getMessage()); 
    } 
+0

嗨chintan我面临同样的问题,我的代码可以帮助你如何实现,如果它被解决。我使用相同的源只上传<12 MB的视频,如果超过这个尺寸的话。该怎么办? –

回答

1

我用代码事端,你应该分割大文件分成小部分,然后尝试sending.And在服务器上加入这一小部分

0

使用发送以块的数据conn.setChunkedStreamingMode(1024); 和缓冲区大小应该是int maxBufferSize = 1 * 1024;

相关问题