【问题标题】:Android save image to PHP serverAndroid将图像保存到PHP服务器
【发布时间】:2016-05-20 20:29:17
【问题描述】:

基本上我试图将用户选择的图像发布到我的服务器并将其保存在那里。

PHP 文件:

<?php
    require_once __DIR__ . '/includes/functions.php';
    require_once __DIR__ . '/includes/config.php';

    $image = $_POST["avatar"];
    $user_id = $_POST["user_id"];

    $files = glob('avatars/*.jpg');
    $name = count($files) + 1;

    $decodedImage = base64_decode($image);
    file_put_contents("avatars/" . $name . ".jpg", $decodedImage);
?>

安卓

private class UploadFileToServer extends AsyncTask<Bitmap, Void, Void> {
    @Override
    protected Void doInBackground(Bitmap... params) {
        Bitmap bitmap = params[0];
        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.JPEG, 100, byteArrayOutputStream);
        byte[] byteArray = byteArrayOutputStream .toByteArray();

        String base64avatar = Base64.encodeToString(byteArray, Base64.DEFAULT);
        String dataString = "user_id=" + userID + "&avatar=" + base64avatar;

        try {
            URL url = new URL(URL_OMITTED);
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("POST");
            conn.setDoOutput(true);

            DataOutputStream os = new DataOutputStream(conn.getOutputStream());
            os.writeBytes(dataString);
            os.flush();
            os.close();

            Log.d("Response code",conn.getResponseCode() + "");

            conn.disconnect();

        } catch(IOException e) {
            e.printStackTrace();
        }
        return null;
    }
}

在服务器上创建了一个文件,但它不可读。当我奇怪地将 compressformat 设置为 PNG 时,会创建一个可读文件,但它已损坏,因此它大部分是黑色的,而不是上传的图像。

【问题讨论】:

    标签: php android httpurlconnection


    【解决方案1】:

    原来 base64 不是 URL_SAFE。 通过更改 Base64.Default to Base64.URL_SAFE 并添加

    $image = str_replace(array('-', '_'), array('+', '/'), $image);
    

    到 php 文件以解码 URL_SAFE 字符串。

    我确信这可能不是这样做的方法,但它确实有效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-19
      • 1970-01-01
      • 1970-01-01
      • 2018-04-07
      • 1970-01-01
      • 2011-12-04
      相关资源
      最近更新 更多