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