您的位置:首页 > 移动开发 > Android开发

android上传文件php服务器接收代码

2013-10-30 15:36 816 查看
php服务器需要修改一些文件限制

参考http://www.111cn.net/phper/php-cy/50203.htm

要注意的是修改完成后要重启apache服务,sudo /etc/init.d/apache2 restart

服务器代码save_upload_file.php:

<?php
function customError($errno, $errstr)
{
echo "<b>Error:</b> [$errno] $errstr<br />";
echo "Ending Script";
die();
}

set_error_handler("customError");

if ($_FILES["imagefile"]["error"] > 0)
{
echo "Error: " . $_FILES["imagefile"]["error"] . "<br />";
}
else
{
echo "Upload: " . $_FILES["imagefile"]["name"] . "<br />";
echo "Type: " . $_FILES["imagefile"]["type"] . "<br />";
echo "Size: " . ($_FILES["imagefile"]["size"] / 1024) . " Kb<br />";
echo "Stored in: " . $_FILES["imagefile"]["tmp_name"];

if (file_exists("/home/lsc/phpupload/" . $_FILES["imagefile"]["name"]))
{
echo $_FILES["imagefile"]["name"] . " already exists. ";
}
else
{
if(!move_uploaded_file($_FILES["imagefile"]["tmp_name"],
"/home/lsc/phpupload/" . $_FILES["imagefile"]["name"])) {
echo "move file error";
}
echo "Stored in: " . "/home/lsc/phpupload/" . $_FILES["imagefile"]["name"] . "<br />";
echo dirname(__FILE__);
}
}
?>

刚开始时候总是接收不到文件,后来才发现这里imagefile这个名字要和客户端的保持一致

android客户端代码:

package com.example.androidphpclient;

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.mime.HttpMultipartMode;
import org.apache.http.entity.mime.MultipartEntity;
import org.apache.http.entity.mime.content.FileBody;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;

import android.os.AsyncTask;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.util.Log;
import android.view.Menu;
import android.widget.Toast;

public class MainActivity extends Activity {

private final static String strUrl = "http://192.168.1.150/save_upload_file.php";
private String uploadFile = "/sdcard/Diagram2.png";
private String srcPath = "/sdcard/Diagram2.png";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

new sendToPHP().execute();
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

class sendToPHP extends AsyncTask<String, Integer, String>{

@Override
protected String doInBackground(String... arg0) {
// TODO Auto-generated method stub

File file = new File(uploadFile);
try {
HttpClient client = new DefaultHttpClient();

HttpPost post = new HttpPost(strUrl);
FileBody bin = new FileBody(file);
MultipartEntity reqEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
reqEntity.addPart("imagefile", bin);
post.setEntity(reqEntity);
HttpResponse response = client.execute(post);
HttpEntity resEntity = response.getEntity();
if (resEntity != null) {
Log.i("RESPONSE",EntityUtils.toString(resEntity));
}

} catch (Exception e) {
e.printStackTrace();
}

return null;
}

//onPostExecute方法用于在执行完后台任务后更新UI,显示结果
@Override
protected void onPostExecute(String result) {

}

}
}


错误报告的等级修改在php.ini的如下字段:
error_reporting
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: