在过去的几周里,我一直在使用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.';
?>
答案 0 :(得分:1)
我会检查服务器上传位置的权限,或检查以确保临时文件夹(例如/ tmp)有足够的空间来接收上传。我遇到过一次该问题(不同的错误信息,但情况相同)。
答案 1 :(得分:0)
我重启了设备,一切正常。不确定为什么,但这是适合你的技术。