移动单据,如何显示单据内的附件内容?(图片)
金蝶云社区-Flong
Flong
1人赞赏了该文章 1,723次浏览 未经作者许可,禁止转载编辑于2017年03月19日 16:08:59

开发了移动单据,上传附件(图片)到cloud单据,以数据库方式存储,在Cloud单据中通过附件查看。
现在想实现在移动单据中,显示已经保存的单据中的附件。 请问该怎么将cloud单据中的附件,显示到移动单据中? 谢谢

下面是上传附件到数据库中的实现代码:
[code]

private void CallUploadFile()
{
//附件控件调用前端上传功能演示
if (this.View.LayoutInfo.GetAppearance("F_PAEZ_FileUpdate") != null)
{
this.View.GetControl("F_PAEZ_FileUpdate").UploadFieldBatch();
}

}
public override void AfterMobileUpload(MobileUploadEventArgs e)
{
string id = this.View.Model.DataObject["FId"].ToString().Trim();
if (string.IsNullOrEmpty(id))
return;
// 获取文件上传的临时目录
string tempDirPath = HttpContext.Current.Request.PhysicalApplicationPath + KeyConst.TEMPFILEPATH;
// 获取附件表的元数据类
var formMetadata = (FormMetadata)MetaDataServiceHelper.Load(this.Context, FormIdConst.BOS_Attachment);

List dynList = new List();
StringBuilder sb = new StringBuilder();
foreach (FiledUploadEntity file in e.FileNameArray)
{
// 检查文件是否上传成功
if (!file.IsSuccess)
{
continue;
}

// 检查文件是否存在
var fileName = System.IO.Path.Combine(tempDirPath, file.FileName);

if (!System.IO.File.Exists(fileName))
{
continue;
}
/**
* 此处几个关键属性解读:
* 1. AttachmentSize 系统统一按照KB单位进行显示,所以需要除以1024
* 2. EntryKey 单据体的标识,这里我们只演示单据头,考虑到各位数据库都不同,不能保持为null,至少应输入空格
* 3. EntryInterID 关联的单据体ID,这里我们只演示单据头,所以固定设置为-1
* 4. BillType 关联的模型的FormId
* 5. BillNo 关联的单据编号,用于确定此附件是属于哪张单据
* 6. BillStatus 关联的单据状态
* 7. InterID 关联的单据/基础资料ID,附件列表就是根据这个ID进行加载
* 8. FileStorage 文件存储类型,0为数据库;1为文件服务器;
*/

var dataBuff = System.IO.File.ReadAllBytes(fileName);
var dyn = new DynamicObject(formMetadata.BusinessInfo.GetDynamicObjectType());

// 数据库的方式是直接保存附件数据

dyn["Attachment"] = dataBuff;
dyn["FileStorage"] = '0';// 数据库,参照属性解读

// 上传文件服务器成功后才加入列表
dyn["AttachmentName"] = file.FileName;
dyn["AttachmentSize"] = Math.Round(dataBuff.Length / 1024.0, 2);
dyn["ExtName"] = System.IO.Path.GetExtension(file.FileName);
dyn["EntryKey"] = ' ';// 参照属性解读
dyn["EntryInterID"] = -1;// 参照属性解读

//// 而实际插件开发可以从移动单据中获取到这些数据
dyn["BillType"] = this.View.BillView.BusinessInfo.GetForm().Id;
dyn["BillNo"] = this.View.Model.DataObject["FNumber"];
dyn["FBillStatus"] = "A";// this.View.Model.DataObject["DocumentStatus"];
dyn["InterID"] = this.View.Model.DataObject["FId"];

dyn["CreateMen_Id"] = Convert.ToInt32(this.Context.UserId);
dyn["ModifyTime"] = dyn["CreateTime"] = TimeServiceHelper.GetSystemDateTime(this.Context);

dynList.Add(dyn);
}
if (dynList.Count > 0)
{
// 所有数据加载完成后再一次性保存全部
BusinessDataServiceHelper.Save(this.Context, dynList.ToArray());
}
base.AfterMobileUpload(e);
this.View.Refresh();


}

[/code]