【问题标题】:upload image on php server在php服务器上上传图片
【发布时间】:2014-07-16 07:07:58
【问题描述】:

我正在尝试将图像上传到我尝试过的服务器上
很多方法bt我没有得到准确的结果

我的 php 脚本是:-

<?php  

//include "db.php";  


if(isset($_POST['action']) && isset($_FILES['arch']))  
 {  
    if($_POST['action']==='uploadfilefromapp')   
    {  
        $newfile = basename($_FILES['arch']['name']);  
        if(move_uploaded_file($_FILES['arch']['tmp_name'], "files/".$newfile))  
        {  
            echo 'ok!';  

            /*$userfile_extn = explode(".", strtolower($_FILES['arch']['name']));  
            echo "extension = ".$userfile_extn;  

            $media_id = $_REQUEST['file_id'];  
            mysql_query("UPDATE media SET description= '$userfile_extn' WHERE media_id='$media_id'");    
            */

         }   
         else  
         {  
            echo 'fail!';  
         }  

    }   
    else   
    {  
        echo 'Go away cheater';  
    }  
}

  ?>

我尝试了这段代码,但没有得到答案。
请帮帮我..拜托

   package com.example.server;

import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.InputStreamReader;
import java.util.Date;

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.ByteArrayBody;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;


import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.Bitmap.CompressFormat;
import android.graphics.BitmapFactory;
import android.graphics.drawable.BitmapDrawable;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.provider.MediaStore;
import android.view.View;
import android.widget.ImageView;
import android.widget.Toast;

public class MainActivity extends Activity {

    private static final int SELECT_PICTURE = 0;
    private ImageView imageView;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        imageView = (ImageView) findViewById(android.R.id.icon);
    }

    public void pickPhoto(View view) {
        //TODO: launch the photo picker
        Intent intent = new Intent();
         intent.setType("image/*");
         intent.setAction(Intent.ACTION_GET_CONTENT);
         startActivityForResult(Intent.createChooser(intent,
         "Select Picture"), SELECT_PICTURE);

    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if(resultCode == RESULT_OK) {
            System.out.println("the data.getdata  "+data.getData().toString());
            Bitmap bitmap = getPath(data.getData());
            System.out.println(bitmap.toString());
            imageView.setImageBitmap(bitmap);
        }
    }

    private Bitmap getPath(Uri uri) {

        String[] projection = { MediaStore.Images.Media.DATA };
        Cursor cursor = managedQuery(uri, projection, null, null, null);
        int column_index = cursor
                .getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
        cursor.moveToFirst();
        String filePath = cursor.getString(column_index);
        cursor.close();
        // Convert file path into bitmap image using below line.
        Bitmap bitmap = BitmapFactory.decodeFile(filePath);

        return bitmap;
    }

    public void uploadPhoto(View view) {
        try {
            new executeMultipartPost().execute(); 
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    private  class executeMultipartPost extends AsyncTask<String, Void, Integer>{
        ProgressDialog mProgressDialog=new ProgressDialog(MainActivity.this);
        @Override
        protected Integer doInBackground(String... params) {

        try {

            ByteArrayOutputStream bos = new ByteArrayOutputStream();

            BitmapDrawable drawable = (BitmapDrawable) imageView.getDrawable();

            Bitmap bitmap = drawable.getBitmap();

            bitmap.compress(CompressFormat.JPEG, 50, bos);

            byte[] data = bos.toByteArray();

            HttpClient httpClient = new DefaultHttpClient();

            HttpPost postRequest = new HttpPost(

            "http://iphmusic.com/CoolBeans/file_upload.php");

            String fileName = String.format("example");
            ByteArrayBody bab = new ByteArrayBody(data, fileName);

            // File file= new File("/mnt/sdcard/forest.png");

            // FileBody bin = new FileBody(file);

            MultipartEntity reqEntity = new MultipartEntity(

            HttpMultipartMode.BROWSER_COMPATIBLE);

            reqEntity.addPart("arch", bab);

            postRequest.setEntity(reqEntity);
            int timeoutConnection = 60000;
            HttpParams httpParameters = new BasicHttpParams();
            HttpConnectionParams.setConnectionTimeout(httpParameters,
                    timeoutConnection);
            int timeoutSocket = 60000;
            HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket);
            HttpConnectionParams.setTcpNoDelay(httpParameters, true);

            HttpResponse response = httpClient.execute(postRequest);

            BufferedReader reader = new BufferedReader(new InputStreamReader(

            response.getEntity().getContent(), "UTF-8"));

            String sResponse;

            StringBuilder s = new StringBuilder();

            while ((sResponse = reader.readLine()) != null) {

                s = s.append(sResponse);

            }

            System.out.println("Response: " + s);

        } catch (Exception e) {

            // handle exception here
            e.printStackTrace();

            // Log.e(e.getClass().getName(), e.getMessage());

        }
         return null;
    }
        @Override
        protected void onPreExecute() {
            // TODO Auto-generated method stub
            super.onPreExecute();
            mProgressDialog.show();
        }
      @Override
        protected void onPostExecute(Integer result) {
            super.onPostExecute(result);
            mProgressDialog.dismiss();
            /*if(result.equals(200)){
                Toast.makeText(getApplicationContext(), "Searching............", Toast.LENGTH_LONG).show(); 

            }else{
                Toast.makeText(getApplicationContext(), "Sorry..No result", Toast.LENGTH_LONG).show();
                }*/
      }

    }
}

请帮帮我..
在此先感谢

【问题讨论】:

标签: android image-uploading


【解决方案1】:

我建议将 Retrofit Library 用于 http 请求,因为我觉得您可能会发现它使用起来很简单,它允许多部分请求正文和文件上传。这是一个链接http://square.github.io/retrofit/

【讨论】:

    【解决方案2】:

    类似这样的:

        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
        nameValuePairs.add(new BasicNameValuePair("action", "uploadfilefromapp"));
    
        httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
    

    进一步:这个网站有很多分段上传的例子。大多数情况下,他们使用“uploaded_file”或“uploadedfile”,而您必须使用“arch”。 'name' 是文件名。

    【讨论】:

      【解决方案3】:

      最好的方法是实现一个 IntentService 并使用广播意图通知状态。请从 git 中查看此代码

      https://github.com/alexbbb/android-upload-service

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-07-18
        • 1970-01-01
        • 2014-01-10
        • 2013-06-07
        • 1970-01-01
        • 1970-01-01
        • 2023-03-12
        • 2011-05-16
        相关资源
        最近更新 更多