Отправить изображение или изображение на php сервер - PullRequest
2 голосов
/ 16 сентября 2011

Мне нужно знать ЛУЧШИЙ способ загрузить растровое изображение и отправить его через http в виде строки, потому что я хочу сохранить его в базе данных.Не могли бы вы помочь мне с любыми идеями, пожалуйста?

Заранее спасибо, С уважением

У меня было что-то такое:

public byte[] ConvertBitmaptoBits(Bitmap src) 
{
    try{
        ByteArrayOutputStream os=new ByteArrayOutputStream(); 
        src.compress( android.graphics.Bitmap.CompressFormat.PNG, 100, (OutputStream)os );

        src.compress(Bitmap.CompressFormat.PNG, 100, os); //bm is the bitmap object   
        byte[] b = os.toByteArray();
        return b;
    }catch(Throwable e)
    {
        //Toast.makeText(this, "Error en ConvierteBitmapAString: " + e.getMessage(), 30);
        Log.v("ConvierteBitmapACadena", "Error al Convertir la imagen a Cadena: " + e.getMessage());
        return null;
    }           
}       

В моем методе SEND у меня было что-то вроде этого:

public void Send() //throws Exception
{
    try 
    {
        InputStreamBody isb=null;
        StringBody sImageString=null;

        Resources r = this.getResources();
            Bitmap bmp = BitmapFactory.decodeResource(r, R.drawable.icon);
    byte[] objImageBits = ConvertBitmaptoBits(bmp);


        if(objImageBits !=null ){
            isb     = new InputStreamBody(new ByteArrayInputStream(objImageBits), "uploadedFile");
        }

        HttpClient httpClient   = new DefaultHttpClient();

        HttpPost postRequest    = new HttpPost(strPath);

        SimpleDateFormat sdfDateTime = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
        String strCurDate =  sdfDateTime.format(new Date(System.currentTimeMillis()));


        StringBody sCurDate     = new StringBody(strCurDate);

        MultipartEntity multipartContent = new MultipartEntity();
        if(objImageBits !=null)
        {
            multipartContent.addPart("uploadedFile", isb);
        }
        multipartContent.addPart("fechaequipo", sCurDate);          
        postRequest.setEntity(multipartContent);


        HttpResponse response   = httpClient.execute(postRequest);
        response.getEntity().getContent().close();
    }
    catch (Throwable e)
    {
        Log.v("executeMultipartPost", "Error in executeMultipartPost: " + e.getMessage());
    }
}

Но, похоже, я не получаю загруженный файл.Это мой PHP-скрипт:

$file2           = (isset($_POST['uploadedFile'])) ? ( $_POST['uploadedFile'] ):('');

$fechaequipo    = (isset($_POST['fechaequipo']) ) ? ( $_POST['fechaequipo'] ):('');

$fp = null;
$log_file = 'log.txt';

if (!$fp) 
    $fp = fopen($log_file, 'a') or exit("No se puede abrir: $log_file!");

fwrite($fp, "<INI LOG>" . date("d/m/Y") ."\n\r");

fwrite($fp, "Date   : ". $fechaequipo . "\n\r");

fwrite($fp, "File2 : " . $file2 . "\n\r");

fwrite($fp, "<END LOG>" . date("d/m/Y") ."\n\r");
fclose($fp);

?>

Я что-то не так делаю?Заранее спасибо !!!

1 Ответ

1 голос
/ 16 сентября 2011

Аналогичный вопрос (в некотором смысле): здесь .

Вы конвертируете свое изображение в base64, а затем отправляете на сервер так, как вам нравится.Затем сервер может декодировать строку в изображение.(С PHP это будет base64-decode).

Имейте в виду, что кодировка base64 увеличивает размер передаваемых данных на примерно на 33% .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...