0

過去数週間、私は Android アプリを使用して、PHP サーバーに投稿する画像を取得してきました。正常に機能し、画像で「共有」を押すことができ、サーバーにアップロードされました。

数人に3日ほど見せていたのですが、今日突然動かなくなりました。「共有」をクリックすると、「ERROR website.com」とだけ表示され、ファイルがアップロードされません。

私はコードを変更していません (Eclipse から新しいコードを再アップロードしたり、サーバー上の PHP ファイルを編集したりしていません)、このエラーはどこからともなく現れたようです。「ERROR website.com」としか表示されていないので、あまり説明的ではありませんが、Web サイトに問題があると推測できます。そのため、.php ファイルを確認したところ、意図したとおりに動作し、Web サイトはクラッシュしていません。

誰かがリモートで似たようなことを経験したことがありますか、またはこれに対する答えをどこで見つけることができるか知っていますか?

Android コード:

public class UploadImage extends Activity {
InputStream inputStream;

@Override
public void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    setContentView(R.layout.activity_starting_point);

    Intent intent = getIntent();
    Bundle extras = intent.getExtras();
    String action = intent.getAction();

    // if this is from the share menu
    if (Intent.ACTION_SEND.equals(action)) {

        if (extras.containsKey(Intent.EXTRA_STREAM)) {
            try {

                // Get resource path from intent callee
                Uri uri = (Uri) extras.getParcelable(Intent.EXTRA_STREAM);

                // Query gallery for camera picture via
                // Android ContentResolver interface
                ContentResolver cr = getContentResolver();
                InputStream is = cr.openInputStream(uri);
                // Get binary bytes for encode
                byte[] data = getBytesFromFile(is);         

                // base 64 encode for text transmission (HTTP)
                int flags = 1;
                byte[] encoded_data = Base64.encode(data, flags);
                String image_str = new String(encoded_data); // convert to
                                                                // string

                ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();

                nameValuePairs.add(new BasicNameValuePair("image",
                        image_str));

                HttpClient httpclient = new DefaultHttpClient();
                HttpPost httppost = new HttpPost(
                        "http://xxxx.php");
                httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
                HttpResponse response = httpclient.execute(httppost);
                String the_string_response = convertResponseToString(response);
                Toast.makeText(UploadImage.this,
                        "Response " + the_string_response,
                        Toast.LENGTH_LONG).show();
            } catch (Exception e) {
                Toast.makeText(UploadImage.this, "ERROR " + e.getMessage(),
                        Toast.LENGTH_LONG).show();
                System.out.println("Error in http connection "
                        + e.toString());
            }
        }
    }
}

PHP コード:

<?php
   if($base=$_REQUEST['image']){
   $binary=base64_decode($base);
   header('Content-Type: bitmap; charset=utf-8');

   $destination =  time() + rand(1, 1000) . ".jpg";
   $url_destination = "project_images/" . $destination;

   $file = fopen($url_destination, 'wb');
   fwrite($file, $binary);
   fclose($file);
   echo 'Image upload complete.';
?>
4

2 に答える 2

1

サーバー上のアップロード場所のアクセス許可を確認するか、一時フォルダー (/tmp など) にアップロードを受信するのに十分なスペースがあることを確認します。私はその問題に一度遭遇しました(エラーメッセージは異なりますが、シナリオは同じです)。

于 2012-12-11T00:51:38.230 に答える
0

デバイスを再起動すると、すべてが正常に機能しました。正確な理由はわかりませんが、それはあなたにとってのテクノロジーです。

于 2012-12-11T01:38:18.170 に答える