2012-06-23 80 views
2

我在android中上傳。爲此,我按照tutorial。我當前的代碼給了我這個錯誤在我的logcat使用base64上傳圖像並在android中發送參數

06-23 10:10:22.990: D/dalvikvm(25853): GC_EXTERNAL_ALLOC freed 48K, 50% free 2723K/5379K, external 0K/0K, paused 33ms 
06-23 10:10:23.030: E/log_tag(25853): Error in http connection java.net.UnknownHostException: www.example.info 
06-23 10:10:23.115: D/CLIPBOARD(25853): Hide Clipboard dialog at Starting input: finished by someone else... ! 

這裏是我的代碼看起來像

public class UploadFileActivity extends Activity { 
/** Called when the activity is first created. */ 
Button bUpload; 
EditText etParam; 

InputStream is; 

@Override 

public void onCreate(Bundle icicle) { 

    super.onCreate(icicle); 
    setContentView(R.layout.main); 

    Bitmap bitmapOrg = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher); 
    ByteArrayOutputStream bao = new ByteArrayOutputStream(); 
    bitmapOrg.compress(Bitmap.CompressFormat.JPEG, 90, bao); 

    byte [] ba = bao.toByteArray(); 
    String ba1=Base64.encodeToString(ba, 0); 

    ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); 
    nameValuePairs.add(new BasicNameValuePair("image",ba1)); 

    try { 
     HttpClient httpclient = new DefaultHttpClient(); 
     HttpPost httppost = new HttpPost("http://www.example.info/androidfileupload/index.php"); 
     httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
     HttpResponse response = httpclient.execute(httppost); 
     HttpEntity entity = response.getEntity(); 
     is = entity.getContent(); 
    } catch(Exception e) { 
     Log.e("log_tag", "Error in http connection "+e.toString()); 
    } 

} 
} 

這裏我使用在服務器端

<?php 
$base=$_REQUEST['image']; 

echo $base; 

// base64 encoded utf-8 string 

$binary=base64_decode($base); 

// binary, utf-8 bytes 

header('Content-Type: bitmap; charset=utf-8'); 

// print($binary); 

//$theFile = base64_decode($image_data); 

$file = fopen('test.jpg', 'wb'); 

fwrite($file, $binary); 

fclose($file); 

echo '<img src=test.jpg>'; 

?> 
+0

有時也會發生,如果權限已被使用,只需重新啓動'Wifi'或'MobileData' –

回答

2

UnknownHostException是什麼與您的網址域有關或者沒有互聯網/網絡連接,

因此,請確保您已在您的AndroidManifest文件中添加了Internet權限。

<uses-permission android:name="android.permission.INTERNET" /> 

希望這有助於

+0

由於它的工作原理。你能告訴我如何保留圖像的名稱作爲原始名稱?我的意思是,我想在上傳時使用該圖像的相同名稱。 – 2619

2

我遵循同樣的教程。只要圖像足夠小就可以工作。

否則你可以在內存問題的out:

httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

要回答你的問題 -

你能告訴我怎樣才能保持圖像的名稱作爲原始 名?我的意思是,我想在上傳 時使用該圖像的相同名稱。

您可以向包含原始名稱的URL請求添加一個變量。否則,您將無法將其嵌入64Byte編碼的字符串中。

事情是這樣的:

"http://www.example.info/androidfileupload/index.php?name=filename" 

PHP側面看上去就像是

$FileName = $_GET['name']; 
相關問題