過去数週間、私は 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.';
?>