1
我試圖從我的android設備上傳一個文件到一個php服務器,但是我得到了「注意:未定義的索引:upload_file.php中的文件在第3行。任何提示可能是什麼?android multipart post to php
這是upload_file.php
<?php
if(isset($_POST))
{
$allowedExts = array("jpg", "jpeg", "gif", "png");
$extension = end(explode(".", $_FILES["file"]["name"]));
echo $_FILES["file"]["type"] . ($_FILES["file"]["size"] < 2000000);
if (((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 2000000))
&& in_array($extension, $allowedExts))
{
if ($_FILES["file"]["error"] > 0)
{
echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
}
else
{
echo "Upload: " . $_FILES["file"]["name"] . "<br />";
echo "Type: " . $_FILES["file"]["type"] . "<br />";
echo "Size: " . ($_FILES["file"]["size"]/1024) . " Kb<br />";
echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";
if (file_exists("files/" . $_FILES["file"]["name"]))
{
echo $_FILES["file"]["name"] . " already exists. ";
}
else
{
move_uploaded_file($_FILES["file"]["tmp_name"],"files/" . $_FILES["file"]["name"]);
echo "Stored in: " . "files/" . $_FILES["file"]["name"];
}
}
}
else
{
echo "Invalid file";
}
}
else
{
echo "nothing posted";
}
?>
,這是大幹快上我的AndroidDevice執行
/**
* POSTphoto
**/
private class POSTphoto
extends AsyncTask<String,String,String>
{
@Override
/** doInBackground */
protected String doInBackground(String... filename)
{
File file = new File(filename[0]);
HttpPost request;
MultipartEntity mpe = new MultipartEntity(
HttpMultipartMode.BROWSER_COMPATIBLE);
FileBody cbFile;
try
{
cbFile = new FileBody(file , "image/jpeg");
mpe.addPart("file" , cbFile);
// Creating the request.
String resource = APIcontroller.buildUrl("");
request = new HttpPost(resource);
request.addHeader("Content-Type" , "multipart/form-data");
request.setEntity(mpe);
return APIcontroller.execute(request);
}
catch (Exception e)
{
e.printStackTrace();
return "some error";
}
}// doInBackground
@Override
/** Shows the content of the result.
* @param result is what the server returns in doInBackground.
**/
protected void onPostExecute(String result)
{
// CLose clients connection pool.
APIcontroller.closeClient();
if (!result.equals(""))
{ // Result not empty.
Log.d("result" , result);
Toast.makeText(FilebrowserActivity.this , result ,
Toast.LENGTH_LONG).show();
}
else
{ // Result empty.
Toast.makeText(FilebrowserActivity.this , "FAILED" ,
Toast.LENGTH_LONG).show();
}
} // onPostExecute
} // POSTphoto
不,這是無效的! – 2012-07-27 11:12:58
我正在用這種方式創建文件..字符串被傳遞給AsyncTask – j4hr0m 2012-07-27 11:21:44