Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
下载用户';s文件通过PHP传输到Android设备_Php_Android_Download_Server - Fatal编程技术网

下载用户';s文件通过PHP传输到Android设备

下载用户';s文件通过PHP传输到Android设备,php,android,download,server,Php,Android,Download,Server,我要做的任务是下载一个特定用户的文件,例如名为“UserNo123.db”(不是纯文本文件),它位于私有目录中 android应用程序应根据使用该应用程序的用户传递所需文件的名称,然后下载该文件并将其保存在设备存储器的某个位置 用户ID->Android应用程序将ID发送到PHP脚本->PHP脚本使用ID获取文件->将其发送回应用程序->应用程序接收正确的文件并将其保存在本地目录中 我对php知之甚少,所以如果我犯了一些基本错误,我向您道歉 String path ="http://LO

我要做的任务是下载一个特定用户的文件,例如名为“UserNo123.db”(不是纯文本文件),它位于私有目录中

android应用程序应根据使用该应用程序的用户传递所需文件的名称,然后下载该文件并将其保存在设备存储器的某个位置

用户ID->Android应用程序将ID发送到PHP脚本->PHP脚本使用ID获取文件->将其发送回应用程序->应用程序接收正确的文件并将其保存在本地目录中

我对php知之甚少,所以如果我犯了一些基本错误,我向您道歉

    String path ="http://LOCALHOST/testdownload.php";
                        URL u = null;
                        try {
                            u = new URL(path);
                            HttpURLConnection c = (HttpURLConnection) u.openConnection();
                            c.setRequestMethod("GET");
                            c.connect();
                            InputStream in = c.getInputStream();
                            final ByteArrayOutputStream bo = new ByteArrayOutputStream();
                            byte[] buffer = new byte[1024];
                            in.read(buffer); // Read from Buffer.
                            bo.write(buffer); // Write Into Buffer.

                            runOnUiThread(new Runnable() {
                                @Override
                                public void run() {
                                    Log.d("READING",bo.toString());
                                    try {
                                        bo.close();
                                    } catch (IOException e) {
                                        e.printStackTrace();
                                    }
                                }
                            });
PHP文件:

    <?php

    $attachment_location = "databases/test.txt";
            if (file_exists($attachment_location)) {

                header($_SERVER["SERVER_PROTOCOL"] . " 200 OK");
                header("Cache-Control: public"); // needed for i.e.
                header("Content-Type: application/txt");
                header("Content-Transfer-Encoding: Binary");
                header("Content-disposition: attachment; filename=\"" . basename($attachment_location) . "\"");   
                header("Content-Length:".filesize($attachment_location));
                readfile($attachment_location);
                die();        
            } else {
                die("Error: File not found.");
            } 

    ?>

这就是我下载一个文件的原因,尽管出于某种原因,在尝试读取一个文本文件作为示例时,它给了我额外的字符,但至少现在没有错误

现在,据我所知,我希望我的请求方法是“POST”,这样我就可以发送所需的查询(用户id),在仍然获取文件的情况下,如何做到这一点


谢谢你

你不需要邮寄来发送Id。GET也可以这样做<代码>字符串路径=”http://LOCALHOST/testdownload.php?id=abc123";
字符串路径=”http://LOCALHOST/testdownload.php?filename=abc123.txt“
从php脚本中删除die()。只有在出现问题时才使用die()。
它会给我额外的字符
。请详细说明。
应用程序收到正确的文件并将其保存在本地目录中
。然后不要在这两者之间使用ByteArrayOutputStream的
。最好直接使用
FileOutputStream
。谢谢!我曾经,我不知道我是怎么忘记的。。。至于额外的字符,它可能来自错误的内容类型,它现在工作正常,它曾经给我“textfilecontents”+我用FileOutputStream加载的符号,文件下载正确,再次感谢!到目前为止,它似乎工作得很好!虽然发生了一件奇怪的事情,我让BufferedReader读取输入流以获取是否有任何错误(未找到文件等),但当我这样做时,下载的数据库文件已损坏,并且当我用BufferedReader注释出检查部分时,下载工作正常且未损坏。我通过创建一个单独的php文件来检查文件是否存在而不打开它,然后创建一个单独的php文件来获取文件,每个文件都有不同的InputStream,它就工作了。您不需要POST来发送Id。get也可以这样做<代码>字符串路径=”http://LOCALHOST/testdownload.php?id=abc123";
字符串路径=”http://LOCALHOST/testdownload.php?filename=abc123.txt“
从php脚本中删除die()。只有在出现问题时才使用die()。
它会给我额外的字符
。请详细说明。
应用程序收到正确的文件并将其保存在本地目录中
。然后不要在这两者之间使用ByteArrayOutputStream的
。最好直接使用
FileOutputStream
。谢谢!我曾经,我不知道我是怎么忘记的。。。至于额外的字符,它可能来自错误的内容类型,它现在工作正常,它曾经给我“textfilecontents”+我用FileOutputStream加载的符号,文件下载正确,再次感谢!到目前为止,它似乎工作得很好!虽然发生了一件奇怪的事情,我让BufferedReader读取输入流以获取是否有任何错误(未找到文件等),但当我这样做时,下载的数据库文件已损坏,并且当我用BufferedReader注释出检查部分时,下载工作正常且未损坏。我通过创建一个单独的php文件来检查文件是否存在而不打开它,然后创建一个单独的php文件来获取文件,每个文件都有一个不同的InputStream,这样就可以了。