2017-09-22 108 views
0

我在嘗試使用Parse API上載服務器上的圖片時遇到問題。我可以從服務器讀取數據並更新任何列上的數據,除了上傳圖像。使用解析API上傳圖片

我從設備選擇了圖像和ImageView的顯示..

// Move to first row 
cursor.moveToFirst(); 

int columnIndex = cursor.getColumnIndex(filePathColumn[0]); 
String imgDecodableString = cursor.getString(columnIndex); 
cursor.close(); 
ImageView imageView = (ImageView) findViewById(R.id.imageView); 
Bitmap bitmap = ((BitmapDrawable) imageView.getDrawable()).getBitmap(); 

// Set the Image in ImageView after decoding the String 
imageView.setImageURI(selectedImage); 
Picasso.with(this).load(selectedImage).fit().centerCrop().into(imageView); 

//resizing the image part 2 
ByteArrayOutputStream baos = new ByteArrayOutputStream(); 

//to Compress the image 
//Quality Accepts 0 - 100 
//0 = MAX Compression (Least Quality which is suitable for Small images) 
//100 = Least Compression (MAX Quality which is suitable for Big images) 
bitmap.compress(Bitmap.CompressFormat.PNG, 0, baos); 

//uploading the image to server 
byte[] imageInByte = imgDecodableString.getBytes(); 
final ParseFile bitmapFile = new ParseFile(imageInByte); 
bitmapFile.saveInBackground(); 

//current user is already logged in. 
ParseObject userDisplayImage = new ParseObject("UserDisplayImage"); 
userDisplayImage.put("photo", bitmapFile); 
userDisplayImage.saveInBackground(); 
+0

你應該嘗試在獲得來自服務器的響應是'saveInBackground()''使用saveInBackground(新SaveCallback {...})'。此外,請務必使用以下命令來檢查解析異常:「if(e!= null)e.printStacktrace();' – ZeekHuge

+0

我做了並仍然得到相同的錯誤 - 吐司」空照片文件「。我認爲從服務器。 – MAT

回答

0

在您的代碼:

final ParseFile bitmapFile = new ParseFile(imageInByte); 
bitmapFile.saveInBackground(); 

bitmapFile上傳在後臺線程,因此你的時候達到下一條語句:

ParseObject userDisplayImage = new ParseObject("UserDisplayImage"); 
userDisplayImage.put("photo", bitmapFile); 
userDisplayImage.saveInBackground (...); 

bitmapFile是沒有完全上傳,因此userDisaplyImage無法指向它。

你可以嘗試以下解決它:

final ParseFile bitmapFile = new ParseFile(imageInByte); 
bitmapFile.saveInBackground(new SaveCallback() { 
     @Override 
     public void done(ParseException e) { 
     if(e==null){ 
      Log.i("hello"," photo saved "); 
      ParseObject userDisplayImage = new ParseObject("UserDisplayImage"); 
      userDisplayImage.put("photo", bitmapFile); 
      userDisplayImage.saveInBackground(); 
     } else { 
      e.printStackTrace(); 
      Log.i("Error", e + "photo not saved"); 
     } 

    } 
}); 
+0

我做了同樣的事情,但收到相同的消息..吐司「空照片文件」。我認爲從服務器。 – MAT

+0

你的代碼中的「空照片文件」在哪裏? – ZeekHuge

+0

它來自吐司。它是空文件和+「照片文件」。我去除了烤麪包。仍然沒有上傳照片。 – MAT