Добрый день!
В рамках интеграции сайта клиента с bpm`online появилась необходимость добавлять с сайта файлы на деталь "Файлы и ссылки" обращения. Для этого был написал веб-сервис для добавления файла, так выглядит метод добавления:
[OperationContract]
[WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped,
ResponseFormat = WebMessageFormat.Json)]
public string InserCaseFile(CaseFileData data)
{
try
{
var appConnection = HttpContext.Current.Application["AppConnection"] as AppConnection;
var userConnection = HttpContext.Current.Session["UserConnection"] as UserConnection;
var caseFile = new Terrasoft.Configuration.CaseFile(userConnection);
// byte[] bytes = Convert.FromBase64String(data.File);
ASCIIEncoding ascii = new ASCIIEncoding();
var t = ascii.GetBytes(data.File);
Stream stream = new MemoryStream(t);
var id = Guid.NewGuid();
caseFile.SetDefColumnValues();
caseFile.Id = id;
caseFile.Name = data.Name;
caseFile.Size = (int)stream.Length;
caseFile.SetStreamValue("Data", stream);
caseFile.CaseId = new Guid(data.CaseId);
caseFile.Save();
return "Ok";
}
catch(Exception er)
{
return er.ToString();
}
}
Для тестирования с помощью SelectQuery веб-службы DataService был получен уже существующий в bpm файл *.txt, при получении значения из колонки Data в json возвращалась строка в кодировке 7-bit ASCII.
При попытке записи этого значения с помощью описанного выше метода в таблицу CaseFile, на детали появляется файл, но при нажатии на него страница перезагружается и скачивания или открытия не происходит.
Скажите пожалуйста, в каком виде нужно передавать файл методу, чтобы после добавления в базу он отображался на детали и его можно было просматривать.