将图像转换为字符串后,字符串的大小与图像的大小相同?

时间:2015-06-11 16:02:44

标签: c# string azure

我已经上传了一个大小为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参数,以便服务总线接受我的消息。

1 个答案:

答案 0 :(得分: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而不是内容。