如何将视频文件下载到SD卡?

时间:2011-10-19 05:40:10

标签: android download

我有一个视频文件(.MP4格式),我想让用户能够将视频下载到他们的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+"");
     }

感谢您的帮助!

3 个答案:

答案 0 :(得分:13)

试试此解决方案

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 :(得分:0)

test1u

答案 2 :(得分:0)

首先从数据库中获取Url,然后将其解析为URI,然后将视频uri粘贴到DownloadManger构造函数中。我正在帮助下从Firebase数据库检索URL到onComplete listiner。

 viewHolder.ll_download.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {

                                final String vdoUri = task.getResult().toString();

                                try {
                                    DownloadManager.Request request = new DownloadManager.Request(Uri.parse(vdoUri));
                                    request.setDescription("download");
                                    request.setTitle(itemlist.get(position).getFile_name());

                                    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
                                        request.allowScanningByMediaScanner();
                                        request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
                                    }
                                    request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, ""+itemlist.get(position).getFile_name()+".mp4");
                                    DownloadManager manager = (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE);
                                    manager.enqueue(request);
                                }

                                catch (Exception ex) {

                                }


                            }
                        });