2013-12-12 23 views
1

我在嘗試刪除內容項目(用戶的圖片blob項目)時存在一個奇怪的問題,在後端存儲爲PNG圖片文件數據庫。Quickblox:刪除內容項目時出現問題(圖片文件/ blob)

刪除過程沒有錯誤,但給出了「422 Unprocessable Entity」。這是什麼意思?在Quickblox管理面板中選中內容項目的狀態似乎是OK並準備就緒。

我已經上傳與下面的API調用的內容:

[QBContent TUploadFile:imageData fileName:@"profile.png" contentType:@"image/png" isPublic:YES delegate:self]; 

我試圖刪除與下面的API調用的對象:

[QBContent deleteBlobWithID:blobID delegate:self]; 

QB日誌:

Performing async request: 
DELETE http://api.quickblox.com/blobs/91049.xml 
headers:{ 
    "QB-SDK" = "iOS 1.8"; 
    "Qb-Token" = b9e3d1cc708c8444070544df8c642ad194509e67; 
    "QuickBlox-REST-API-Version" = "0.1.1"; 
} 
parameters: 
2013-12-12 14:33:52.328 QBTestApp[21095:6b73] Request finished, response: 
headers:{ 
    "Access-Control-Allow-Origin" = "*"; 
    "Cache-Control" = "no-cache"; 
    Connection = "keep-alive"; 
    "Content-Length" = 49; 
    "Content-Type" = "application/xml; charset=utf-8"; 
    Date = "Thu, 12 Dec 2013 13:33:58 GMT"; 
    "QB-Token-ExpirationDate" = "2013-12-12 15:32:22 UTC"; 
    "QuickBlox-REST-API-Version" = "0.1.1"; 
    Server = "nginx/1.0.15"; 
    Status = "422 Unprocessable Entity"; 
    "X-Rack-Cache" = "invalidate, pass"; 
    "X-Request-Id" = 3f235134e5aa0bd012ef78e54cddc164; 
    "X-Runtime" = "0.039680"; 
    "X-UA-Compatible" = "IE=Edge,chrome=1"; 
} 
body: 
error: 
<?xml version="1.0" encoding="UTF-8"?> 
<errors/> 

任何想法我可能在這裏做錯了嗎?再次感謝(再次)! :-)

+1

更新14/12/2013:我爲此創建了一個小測試小程序,似乎能夠成功刪除較舊的blob文件,但不是我創建並附加到用戶的最新blob文件。這讓我想起** blob項是否被鎖定**以防將其附加到某個用戶的_user.blobID_字段中?所以這個問題的正確解決方法是從_user.blobID_字段中刪除特定的blob鏈接,然後更新這樣的用戶對象,並且只有這樣才能完成我可以刪除blob內容文件 - >待驗證(我會請在星期一檢查) –

回答

2

您試圖刪除不存在的Blob文件的感覺。上傳和創建過程完成後請確保您嘗試刪除blob文件(調用completedWithResult:成功結果)。

如果我可以在代碼中看到方法調用TUploadFile:和deleteBlobWithID:的順序,我可以更快地幫助您。

+0

感謝@glebus的反饋。不幸的是,我已經檢查了電話的順序,我可以向你保證在通話之間有足夠的時間。在QB儀表板中,我可以驗證文件是否存在於雲中,並且可以通過儀表板查看圖像文件。我還可以通過編程方式下載文件,並將文件的內容放入UIImage中。我將仔細檢查此內容並製作一個小代碼片段,以明天驗證此功能。 –

+0

關於您的上次更新。 我同意 - 這種行爲並不完全清楚。它看起來更像是iOS中的手動內存管理。當你上傳一個文件時,你創建了一個類內容的對象並且將引用計數增加了1.如果你把這個對象的blobID設置爲user.blob_id,這就等於調用保留對象的內容。在刪除稱爲釋放方法的對象內容的過程中,如果它的引用計數不是0,則返回錯誤。 http://quickblox.com/developers/Content#Delete_file – glebus

+0

我認爲應該添加到將blobID any設置爲user.blob_id的文檔中,以增加此blob中的引用計數。並且只需要創建一個錯誤描述,當您嘗試刪除blob時會返回錯誤描述,更具信息性。 – glebus