Использую вот такой вот скрипт, где FileID - id нашего файла
EntitySchemaManager esqManager = UserConnection.EntitySchemaManager;
var esqResult = new EntitySchemaQuery(esqManager, "File");
esqResult.AddAllSchemaColumns();
esqResult.AddColumn("Data");
Entity currentFile = esqResult.GetEntity(UserConnection, FileID);
//файл должен появиться
while (currentFile == null) {
currentFile = esqResult.GetEntity(UserConnection, FileID);
}
var currentFileName = currentFile.GetTypedColumnValuestring>("Name");
var currentFileData = currentFile.GetBytesValue("Data");
var Response = Page.Response;
Response.AddHeader("Content-Disposition", "attachment; filename=\""" + System.Web.HttpUtility.UrlPathEncode(currentFileName) + ""\"""");
var esqResult = new EntitySchemaQuery(esqManager, "File");
esqResult.AddAllSchemaColumns();
esqResult.AddColumn("Data");
Entity currentFile = esqResult.GetEntity(UserConnection, FileID);
//файл должен появиться
while (currentFile == null) {
currentFile = esqResult.GetEntity(UserConnection, FileID);
}
var currentFileName = currentFile.GetTypedColumnValuestring>("Name");
var currentFileData = currentFile.GetBytesValue("Data");
var Response = Page.Response;
Response.AddHeader("Content-Disposition", "attachment; filename=\""" + System.Web.HttpUtility.UrlPathEncode(currentFileName) + ""\"""");
Нравится
3 комментария
16 января 2014 17:13
Здравствуйте, Александр!
Думаю, стоит воспользоваться готовым решением из процесса "Скачать шаблон для импорта контрагентов", например:
public virtual bool DownloadTemplateScriptExecute(ProcessExecutingContext context) { var entitySchemaManager = UserConnection.EntitySchemaManager; var entitySchema = entitySchemaManager.GetInstanceByName("File"); var entitySchemaQuery = new EntitySchemaQuery(entitySchemaManager, entitySchema.Name); var dataColumn = entitySchemaQuery.AddColumn("Data"); entitySchemaQuery.Filters.Add( entitySchemaQuery.CreateFilterWithParameters( FilterComparisonType.Equal, "[KnowledgeBaseFile:FileId].KnowledgeBase", new object[] {new Guid("edb71f06-f46b-1410-e980-20cf30b39373")})); entitySchemaQuery.Filters.Add( entitySchemaQuery.CreateFilterWithParameters( FilterComparisonType.Equal, "Name", new object[] {FileName.ToString()})); var entityCollection = entitySchemaQuery.GetEntityCollection(UserConnection); if (entityCollection.Count > 0) { var data = entityCollection[0].GetBytesValue(dataColumn.Name) as byte[]; var response = HttpContext.Current.Response; TSConfiguration.PageResponse.Write(response, data, FileName, TSConfiguration.ContentType.XmlType); } return true; }
1 января 1970 03:00
К сожалению у меня TSConfiguration не знает методов PageResponse и ContentType, и в процессе "Скачать шаблон ..." вместо TSConfiguration стоит скрипт
Response.AddHeader("Content-Disposition", "attachment; filename=\"" + System.Web.HttpUtility.UrlPathEncode(FileName) + ""\"""");
17 января 2014 15:44
Александр, какая у Вас версия ядра?
Попробую воспроизвести.
По поводу загрузки данных попробуйте перед вызовом LoadRows() установить
Page.DataSource.PageRowsCount = -1; //или заведомо вольшое числ
Показать все комментарии
Войдите или зарегистрируйтесь, что бы комментировать