应用图片上传功能停止工作

时间:2012-12-11 00:46:52

标签: php android image upload

在过去的几周里,我一直在使用Android应用程序将图像发布到PHP服务器。我成功地使它工作了,我能够在图像上点击“共享”并将其上传到服务器。

我已经向几个人展示了大约3天,今天它突然停止了工作。现在当我点击'分享'时,它只是说'ERROR website.com'而且文件没有上传。

我没有更改任何代码(我没有从Eclipse重新上传任何新代码,也没有在服务器上编辑过PHP文件),似乎这个错误突然冒出来了。因为它只是说“ERROR website.com”,它不是很具描述性,但我可以假设网站是问题所在。所以我检查了.php文件,它仍然按预期工作,网站没有崩溃。

有没有人经历过任何远程相似的事情,或者有人知道我在哪里可以找到答案吗?

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.';
?>

2 个答案:

答案 0 :(得分:1)

我会检查服务器上传位置的权限,或检查以确保临时文件夹(例如/ tmp)有足够的空间来接收上传。我遇到过一次该问题(不同的错误信息,但情况相同)。

答案 1 :(得分:0)

我重启了设备,一切正常。不确定为什么,但这是适合你的技术。