Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将图像从android发送到php服务器_Php_Android_Image_Upload - Fatal编程技术网

将图像从android发送到php服务器

将图像从android发送到php服务器,php,android,image,upload,Php,Android,Image,Upload,我对这段代码有一个很大的问题。我的目标是通过php向服务器发送一个图像(存储在sd卡中)。这是密码。我还使用了这4个LIB import com.loopj.android.http.AsyncHttpClient; import com.loopj.android.http.AsyncHttpResponseHandler; import com.loopj.android.http.Base64; import com.loopj.android.http.RequestParams;

我对这段代码有一个很大的问题。我的目标是通过php向服务器发送一个图像(存储在sd卡中)。这是密码。我还使用了这4个LIB

import com.loopj.android.http.AsyncHttpClient;
import com.loopj.android.http.AsyncHttpResponseHandler;
import com.loopj.android.http.Base64;
import com.loopj.android.http.RequestParams; 



public void mytry(){

String fileName = Environment.getExternalStorageDirectory() + "/myImage.png";
String fileNameSegments[] = imgPath.split("/");
fileName = fileNameSegments[fileNameSegments.length - 1];
params.put("filename", fileName);
if (imgPath != null && !imgPath.isEmpty()) {
     encodeImagetoString();
}
     else {
         Log.v("NO","no File");
     }
}

public void encodeImagetoString() {
new AsyncTask<Void, Void, String>() {

    protected void onPreExecute() {

    };

    @Override
    protected String doInBackground(Void... params) {
        BitmapFactory.Options options = null;
        options = new BitmapFactory.Options();
        options.inSampleSize = 3;
        bitmap = BitmapFactory.decodeFile(imgPath,
                options);
        ByteArrayOutputStream stream = new ByteArrayOutputStream();
        // Must compress the Image to reduce image size to make upload easy
        bitmap.compress(Bitmap.CompressFormat.PNG, 50, stream); 
        byte[] byte_arr = stream.toByteArray();
        // Encode Image to String
        encodedString = Base64.encodeToString(byte_arr, 0);
        return "";
    }

    @Override
    protected void onPostExecute(String msg) {
        Log.v("OK","Calling Upload");
        // Put converted Image string into Async Http Post param
        params.put("image", encodedString);
        // Trigger Image upload
        triggerImageUpload();
    }
}.execute(null, null, null);
}

public void triggerImageUpload() {
    makeHTTPCall();
}

public void makeHTTPCall() {
    AsyncHttpClient client = new AsyncHttpClient();

    client.post("http://mywebsite.com/phppage.php", params, new AsyncHttpResponseHandler() {

            @Override
                public void onFailure(int statusCode, Header[] headers, byte[] errorResponse, Throwable e)  {
                Log.v("Fail","Epic fail");
                // TODO Auto-generated method stub
                // When Http response code is '404'
                if (statusCode == 404) {
                   Log.v("NO","Requested resource not found");

                }
                // When Http response code is '500'
                else if (statusCode == 500) {
                     Log.v("NO","Something went wrong at server end");
                }
                // When Http response code other than 404, 500
                else {

                     Log.v("NO","Error Occured \n Most Common Error: \n1. Device not connected to Internet\n2. Web App is not deployed in App server\n3. App server is not running\n HTTP Status code : "
                                    + String.valueOf(statusCode));
                }
            }

            @Override
            public void onSuccess(int statusCode, Header[] headers, byte[] response)  {
                // TODO Auto-generated method stub
                // Hide Progress Dialog
                Log.v("Yeah",String.valueOf(statusCode));
                Log.v("Yeah",String.valueOf(headers));
                Log.v("Yeah",String.valueOf(response));
            }


        });
}
导入com.loopj.android.http.AsyncHttpClient;
导入com.loopj.android.http.AsyncHttpResponseHandler;
导入com.loopj.android.http.Base64;
导入com.loopj.android.http.RequestParams;
公共无效mytry(){
字符串fileName=Environment.getExternalStorageDirectory()+“/myImage.png”;
字符串fileNameSegments[]=imgPath.split(“/”);
fileName=fileNameSegments[fileNameSegments.length-1];
参数put(“文件名”,文件名);
if(imgPath!=null&&!imgPath.isEmpty()){
encodeImagetoString();
}
否则{
Log.v(“否”、“无文件”);
}
}
public void encodeImagetoString(){
新建异步任务(){
受保护的void onPreExecute(){
};
@凌驾
受保护字符串doInBackground(无效…参数){
BitmapFactory.Options=null;
options=新的BitmapFactory.options();
options.inSampleSize=3;
位图=位图工厂.decodeFile(imgPath,
选择权);
ByteArrayOutputStream=新建ByteArrayOutputStream();
//必须压缩图像以减小图像大小,以便于上传
compress(bitmap.CompressFormat.PNG,50,流);
byte[]byte_arr=stream.toByteArray();
//将图像编码为字符串
encodedString=Base64.encodeToString(字节_arr,0);
返回“”;
}
@凌驾
受保护的void onPostExecute(字符串msg){
Log.v(“确定”,“呼叫上传”);
//将转换后的图像字符串放入异步Http Post参数
参数put(“图像”,编码字符串);
//触发图像上传
triggerImageUpload();
}
}.执行(空,空,空);
}
public void triggerImageUpload(){
makeHTTPCall();
}
public void makeHTTPCall(){
AsyncHttpClient=新的AsyncHttpClient();
客户邮寄(“http://mywebsite.com/phppage.php,参数,新的AsyncHttpResponseHandler(){
@凌驾
public void onFailure(int statusCode,Header[]headers,byte[]errorResponse,Throwable e){
Log.v(“失败”、“史诗般失败”);
//TODO自动生成的方法存根
//当Http响应代码为“404”时
如果(状态代码==404){
Log.v(“否”,“未找到请求的资源”);
}
//当Http响应代码为“500”时
否则如果(状态代码==500){
Log.v(“否”,“服务器端出错”);
}
//当Http响应代码不是404500时
否则{
Log.v(“否”,“发生错误\n最常见的错误:\n1.未连接到Internet的设备\n2.未在应用服务器中部署Web应用\n3.应用服务器未运行\n HTTP状态代码:”
+字符串.valueOf(statusCode));
}
}
@凌驾
成功时公共无效(int statusCode,头[]头,字节[]响应){
//TODO自动生成的方法存根
//隐藏进度对话框
Log.v(“Yeah”,String.valueOf(statusCode));
Log.v(“Yeah”,String.valueOf(headers));
Log.v(“Yeah”,String.valueOf(response));
}
});
}
下面是php代码:

<?php

$filename = $_REQUEST['filename'];


$base=$_REQUEST['image'];
$binary=base64_decode($base);
header('Content-Type: image/png; charset=utf-8');

$file = fopen("uploads/".$filename, 'wb');


fwrite($file, $binary);
fclose($file);

?>

当我运行我的应用程序时,我得到了“成功”(响应200等等),但我的php页面看起来好像收到了任何东西。我花了两天时间在这上面


提前谢谢

它是否在
上传
中创建了文件?否。当我对“params”进行字符串化时,我得到的文件名后面跟着名称和图像,后面跟着一系列字母和数字,但看起来php文件甚至无法读取$\u请求['filename']部分让php脚本回显开始时的文件名。并检查响应。检查图像中的字节数。与发送的金额进行比较。先做一些基本的调试。