从Android Emulator发送文件到localhost - 301来自localhost / PHP文件问题的错误响应

时间:2012-12-28 00:07:02

标签: android android-emulator xampp localhost http-status-code-301

我正在尝试将android模拟器连接到我的localhost(xampp)并将文件发送到文件夹。

我正在使用slott的代码 - wrapping the code up in an Async task to avoid threading errors

并通过以下方式调用:

new AsyncHttpPostTask("http://10.0.2.2/android").execute(new File(myFile));

myFile是一个带有一些文本的有效文件

文件夹“android”直接存在于c盘上的“xampp / htdocs”文件夹下

我已在清单中添加了互联网权限

我删除了我的AVD并创建了一个新的

XAMPP正在运行,如果我在浏览器中打开它,路径是有效的,例如http://localhost/android

执行代码后,我从localhost服务器获得“301 Moved Permanently”响应

关于我做错了什么或我如何进一步调查的任何想法?

== EDIT

我错过了我路径上的php文件。我使用以下PHP

<?php
if (is_uploaded_file($_FILES['userfile']['tmp_name'])) {
  echo "File ". $_FILES['userfile']['name'] ." uploaded successfully.\n";
  move_uploaded_file ($_FILES['userfile'] ['tmp_name'], $_FILES['userfile'] ['name']);
} else {
  echo "Possible file upload attack: ";
  echo "filename '". $_FILES['userfile']['tmp_name'] . "'.";
  print_r($_FILES);
}
?>

我之前没有使用过PHP但是我现在可以连接但是在响应中收到以下错误:

server.php文件中未定义的索引

2 个答案:

答案 0 :(得分:1)

您需要发布数据,但您还需要一个脚本(可能是因为您使用的是XAMPP而编写的),以接受发布数据并将其保存到该位置。

编辑:

我建议您编写一个表单以与您的php脚本进行交互,以测试问题是否与您的服务器接受文件有关。

<form enctype="multipart/form-data" action="http://localhost/android/server.php"; method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="100000" /> 
Choose a file to upload: <input name="uploadedfile" type="file" /><br /> 
<input type="submit" value="Upload File" /> 
</form>

使该页面测试从您的计算机上传文件。也可以在AVD浏览器中试用。

我认为您的问题是您使用的是localhost。您可能需要使用您的服务器公共IP地址。看看这个:https://stackoverflow.com/a/5224558/1629749

答案 1 :(得分:0)

我修改了我的PHP代码以使用MultipartEntity

PHP更改后模拟器崩溃了,但是通过删除我的AVD并创建一个新的AVD来解决这个问题。另外我重启了我的localhost服务器