2011-10-19 5 views
5

Tôi có một tập tin video (MP4 định dạng) và tôi muốn cho phép người dùng có thể tải về các video sang SD card.I của họ hiện đang sử dụng mã này, nhưng nó không làm việc ..Tôi làm cách nào để tải tệp video xuống thẻ SD?

String PATHSdcard = "/sdcard/Video/"; 

public void DownloadFromUrl(String VideoURL, String fileName)   


try { URL url = new URL("https://javmed-prod.s3.amazonaws.com/666034cbe81045f2a2da50e5205e376b.mp4"); 
      File file = new File(fileName); 

      long sTime = System.currentTimeMillis(); 
      URLConnection URLcon = url.openConnection(); 

      InputStream is = URLcon.getInputStream(); 
      BufferedInputStream bis = new BufferedInputStream(is); 

      ByteArrayBuffer baf = new ByteArrayBuffer(50); 
      int current = 0; 
      while ((current = bis.read()) != -1) { 
        baf.append((byte) current); 
      } 

      FileOutputStream fos = new FileOutputStream(PATHSdcard+file); 
      fos.write(baf.toByteArray()); 
      fos.close(); 

    } catch (IOException e) { 
      Log.d("ERROR.......",e+""); 
    } 

Cảm ơn vì bất kì sự giúp đỡ!

+1

bạn đã thử làm gì trước? – user370305

+0

nguồn của video ở đâu? Nó có được lưu trữ trên máy chủ http không? – momo

+1

http://stackoverflow.com/questions/3692252/android-how-do-i-download-a-video-file-to-sd-card có thể trùng lặp. –

Trả lời

12

Hãy thử giải pháp này

package com.Video.ALLTestProject; 

import java.io.File; 
import java.io.FileOutputStream; 
import java.io.InputStream; 
import java.net.HttpURLConnection; 
import java.net.URL; 
import android.content.Intent; 
import android.os.AsyncTask; 
import android.os.Environment; 
import android.util.Log; 


public class VideoSaveSDCARD extends Activity{ 

public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     ProgressBack PB = new ProgressBack(); 
     PB.execute(""); 
    } 

    private class ProgressBack extends AsyncTask<String,String,String> { 
     ProgressDialog PD; 
     @Override 
     protected void onPreExecute() { 
      PD= ProgressDialog.show(LoginPage.this,null, "Please Wait ...", true); 
      PD.setCancelable(true); 
     } 

     @Override 
     protected void doInBackground(String... arg0) { 
     downloadFile("http://beta-vidizmo.com/hilton.mp4","Sample.mp4");    

     } 
     protected void onPostExecute(Boolean result) { 
      PD.dismiss(); 

     } 

    } 



    private void downloadFile(String fileURL, String fileName) { 
     try { 
     String rootDir = Environment.getExternalStorageDirectory() 
       + File.separator + "Video"; 
      File rootFile = new File(rootDir); 
      rootFile.mkdir(); 
      URL url = new URL(fileURL); 
      HttpURLConnection c = (HttpURLConnection) url.openConnection(); 
      c.setRequestMethod("GET"); 
      c.setDoOutput(true); 
      c.connect(); 
      FileOutputStream f = new FileOutputStream(new File(rootFile, 
        fileName)); 
      InputStream in = c.getInputStream(); 
      byte[] buffer = new byte[1024]; 
      int len1 = 0; 
      while ((len1 = in.read(buffer)) > 0) { 
       f.write(buffer, 0, len1); 
      } 
      f.close(); 
    } catch (IOException e) { 
     Log.d("Error....", e.toString()); 
    } 

} 
+1

setDoOutput (thật); sẽ không làm việc trong Ice Cream Sandwitch – Nepster

0
   URL url = new URL(mp4url); 


       //Open a connection to that URL. 
       HttpsURLConnection con = (HttpsURLConnection) 

       int response =con.getResponseCode(); 


       InputStream is = con.getInputStream(); 
       BufferedInputStream inStream = new BufferedInputStream(is, 1024 * 5); 
       FileOutputStream outStream = new FileOutputStream(new File(Environment.getExternalStorageDirectory() + "/" + "mnt/sdcard/17.mp4")); 
       byte[] buff = new byte[7 * 1024]; 

       int len; 
       while ((len = inStream.read(buff)) != -1) 
       { 
        outStream.write(buff,0,len); 
       } 
       //clean up 
       outStream.flush(); 
       outStream.close(); 
       inStream.close(); 
+0

tôi đã thử mã này sau nhiều cuộc đấu tranh tôi đã tìm thấy giải pháp này ................. nó hoạt động tốt –