2015-06-11 38 views
0

我已經上傳了一個大小爲X的圖像,然後我轉換成了一個字符串,我需要將字符串分成幾個字符串,大小爲Y.圖像的大小和字符串的大小是一樣的?我使用JavaScript進行轉換,然後在C#中我需要分割字符串,所以我可以通過服務總線連接發送此槽。將圖像轉換爲字符串後,字符串的大小與圖像大小相同?

我的問題是Azure中的服務總線連接只接受256kb的消息,我的圖像大小限制爲7MB。此代碼適用於小型圖像

我上傳的圖片,並將其轉換爲字符串:

function SaveDocuments() { 
    showModalMessage('Please wait ...'); 
    setTimeout(function() { saveDetailstoServer() }, 1000); 
} 

function saveDetailstoServer() { 

    var organization = $("#organization").val() 
    var documentsToSave = "" 
    for (var i in documents) { 
     //alert(documents[i].name); 

     documentsToSave += documents[i].toString() + "||" 

    } 
    organization = organization.replace(/"/g, '└') + "||" 
    // userEmail = ""; 


    SendDetailsToServer(new Array(new Array("documentsToSave", documentsToSave), new Array("organization", organization), new Array("userEmail", userEmail))); 

} 

function SendDetailsToServer(parameters) { 
    var url = baseUrl + "SaveDocuments"; 
    var parameterString = ArrayToJson(parameters); 
    project_ajax(url, processResponse, null, "POST", parameterString); 
} 

在我的C#代碼,我收到這是一個字符串,我的目的是要送這個trhough服務總線,但當圖像大於200 kb時,郵件大小會變大。

namespace OpenIdProviderRole.Services 
{ 
    public class FEUserDocumentationManager : BaseManager 
{ 

    public string SaveDocuments(string documentsToSave, string organization, string userEmail) 
    { 

     FEInterRoleCommunicator communicator = new FEInterRoleCommunicator(); 
     string result = communicator.SendCommand<Shared.DTOs.Parameters.SaveDocumentsParameters, string>("SaveDocuments", 
       new Shared.DTOs.Parameters.SaveDocumentsParameters 
       { 
        Documents = documentsToSave, 
        Organization = organization, 
        UserEmail = userEmail 
       }); 
     return result; 
    } 
} 

} 

我想拆分documentsToSave參數,以便服務總線接受我的消息。

+6

轉儲映像到存儲並通過服務總線傳遞id?對於你的字符串問題,你需要顯示一些代碼,因爲它不清楚你想要分割什麼 - 沒有規範的方式來「將圖像轉換爲字符串」 - 很難猜測。通常情況下,你會用你選擇的語言將字符串'string.substring'拆分。 –

+0

@AlexeiLevenkov說什麼;我們需要看到實際將圖像轉換爲字符串的代碼。 –

+0

你有,我用一個簡單的.toString –

回答

0

若要將長字符串分成多個短字符串的集合,請使用String.substring。類似:

var slices = Enumerable.Range(0, longString.Length/ blockSize + 1) 
    .Select(blockIndex => longString.Substring(
     startIndex: blockIndex * blockSize, 
     length: Math.Min(longString.Length - blockIndex * blockSize, blockSize))); 

注以字符串的切片該方法要求發送多條消息,以滿足消息大小帽,並因此適當地將它們合併回另一側。更好的方法是將更大的數據存儲在blob存儲(或大型對象的類似存儲)中,並傳遞blob ID而不是內容。

+0

你是正確的blob存儲是一個更好的方法 –

相關問題