如何从我的网站上的应用程序接收文件?

时间:2017-12-23 10:37:28

标签: android web-services http server

我希望我的Android应用的用户能够使用http将zip文件发送到我的服务器。我想象的用例看起来像这样:

  • 用户使用HttpClientHttpPost(如here所述)向我的服务器发送一个zip文件和一个包含密码的字符串。

  • 通过使用现有密码登录www.example.com/my_app,用户可以使用给定密码下载人们发送到我服务器的文件。

我不明白如何做第二步。我需要在我的网站上编写哪些代码才能接收Android用户发送的文件?我的托管计划下有一个共享服务器和一个简单的网站。

1 个答案:

答案 0 :(得分:1)

首先需要修改上传代码(因为文件上传被视为多部分数据)。 这是修改后的上传代码 -

String url = "http://localhost/upload.php";
        File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath(),
                "file.txt");
        try {
            HttpClient httpclient = new DefaultHttpClient();
            HttpPost httppost = new HttpPost(url);
            Part[] parts = new Part[1];
            parts[0] =  new FilePart("fileToUpload", file);
            MultipartEntity reqEntity = new MultipartEntity(parts);
            reqEntity.setContentType("binary/octet-stream");
            reqEntity.setChunked(true); // Send in multiple parts if needed
            httppost.setEntity(reqEntity);
            HttpResponse response = httpclient.execute(httppost);
        } catch (Exception e) {
            e.printStackTrace();
        }

这里我使用了 fileToUpload 作为上传文件的参数键。在服务器代码上,您可以为 $ _ FILES [" fileToUpload"] 使用相同的密钥。 这是最简单的PHP代码,用于接受来自Android代码上传的数据 -

<?php
$target_dir = "/Users/chauhan/Desktop/uploads/";
$target_file = $target_dir . basename("abc.txt");
move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file);
?>