我希望我的Android应用的用户能够使用http
将zip文件发送到我的服务器。我想象的用例看起来像这样:
用户使用HttpClient
和HttpPost
(如here所述)向我的服务器发送一个zip文件和一个包含密码的字符串。
通过使用现有密码登录www.example.com/my_app
,用户可以使用给定密码下载人们发送到我服务器的文件。
我不明白如何做第二步。我需要在我的网站上编写哪些代码才能接收Android用户发送的文件?我的托管计划下有一个共享服务器和一个简单的网站。
答案 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);
?>