Не удается загрузить файл в телефон Android - Android ..? - PullRequest
1 голос
/ 09 февраля 2012

У меня проблема с загрузкой файла,

Я могу загрузить файл в эмуляторе, но он не работает с телефоном.Я определил разрешение для Интернета и записи SD-карты .

У меня есть один файл документа на сервере, и если пользователь нажимает на загрузку.Он загружает файл. отлично работает в эмуляторе , но не работает в телефоне.

Редактировать Мой код для скачивания файла

public void downloadFile(String _url, String fileName) {
        File PATH = Environment
                .getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
        try {
            PATH.mkdirs();
            URL url = new URL(_url); // you can write here any link
            File file = new File(PATH, fileName);

            long startTime = System.currentTimeMillis();
            Log.d("Manager", "download begining");
            Log.d("DownloadManager", "download url:" + url);
            Log.d("DownloadManager", "downloaded file name:" + fileName);
            /* Open a connection to that URL. */
            URLConnection ucon = url.openConnection();

            /*
             * Define InputStreams to read from the URLConnection.
             */
            InputStream is = ucon.getInputStream();
            BufferedInputStream bis = new BufferedInputStream(is);

            /*
             * Read bytes to the Buffer until there is nothing more to read(-1).
             */
            ByteArrayBuffer baf = new ByteArrayBuffer(50);
            int current = 0;
            while ((current = bis.read()) != -1) {
                baf.append((byte) current);
            }

            /* Convert the Bytes read to a String. */
            FileOutputStream fos = new FileOutputStream(file);
            fos.write(baf.toByteArray());
            fos.close();
            Log.d("ImageManager",
                    "download ready in"
                            + ((System.currentTimeMillis() - startTime) / 1000)
                            + " sec");

        } catch (IOException e) {
            Log.d("ImageManager", "Error: " + e);
        }
    }

1 Ответ

2 голосов
/ 20 февраля 2012

попробуйте приведенные ниже фрагменты ...

File PATH = Environment
                .getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
        try {
            //set the download URL, a url that points to a file on the internet
            //this is the file to be downloaded
            _url = _url.replace(" ", "%20");
            URL url = new URL(_url);

            //create the new connection
            HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();

            //set up some things on the connection
            urlConnection.setRequestMethod("GET");
            urlConnection.setDoOutput(true);


            //and connect!
            urlConnection.connect();

            //create a new file, specifying the path, and the filename
            //which we want to save the file as.
            File file = new File(PATH,fileName);

            //this will be used to write the downloaded data into the file we created
            FileOutputStream fileOutput = new FileOutputStream(file);

            //this will be used in reading the data from the internet
            InputStream inputStream = urlConnection.getInputStream();

            //this is the total size of the file
            int totalSize = urlConnection.getContentLength();
            Log.i("Download", totalSize+"");
            //variable to store total downloaded bytes
//          int downloadedSize = 0;

            //create a buffer...
            byte[] buffer = new byte[1024];
            int bufferLength = 0; //used to store a temporary size of the buffer

            //now, read through the input buffer and write the contents to the file
            while ( (bufferLength = inputStream.read(buffer)) > 0 ) {
                    //add the data in the buffer to the file in the file output stream (the file on the sd card
                    fileOutput.write(buffer, 0, bufferLength);
            }
            //close the output stream when done
            fileOutput.close();
            return true;

    //catch some possible errors...
    } catch (MalformedURLException e) {
            e.printStackTrace();
    } catch (IOException e) {
            e.printStackTrace();
    }

убедитесь, что вы ввели правильный путь загрузки (URL)

...