Appearance
附件上传相关方法
概述
本节介绍软航OFFICE文档控件提供的附件上传相关方法,这些方法允许开发者管理文档的附件文件,包括添加附件、获取附件信息、删除附件等功能,为文档管理系统提供完整的附件处理能力。
附件管理
AddFileToUploadFileAttachFileList
语法:
javascript
AddFileToUploadFileAttachFileList(FileFieldName, bIsMultiSelect, lpstrFilter)
功能:
添加准备上传的附件文件。
参数:
名称 | 必选/可选 | 数据类型 | 说明 |
---|---|---|---|
FileFieldName | 必选 | string | 文件域名称 |
bIsMultiSelect | 必选 | bool | 是否允许多选 |
lpstrFilter | 必选 | string | 后缀名过滤字符串 |
返回值:
无返回值。
说明:
参数lpstrFilter:过滤字符串由描述与后缀名两段组成,中间用"|"符号分隔,即"描述|后缀名",如"doc文件|.doc"。如果有多个过滤条件,后缀名这段用";"分隔不同类型的文件,如"所有WORD文件|.doc;*.docx"。
注意: 此方法可以根据文件类型或用途不同,反复定义添加多个文件域。
使用示例:
javascript
// 添加单个文件域
function addSingleFileField() {
try {
// 添加Word文档文件域
OCX_OBJ.AddFileToUploadFileAttachFileList("wordFiles", false, "Word文档|*.doc;*.docx");
console.log("Word文档文件域已添加");
} catch (error) {
console.error("添加文件域失败:", error.message);
}
}
// 添加多选文件域
function addMultiSelectFileField() {
try {
// 添加多选图片文件域
OCX_OBJ.AddFileToUploadFileAttachFileList("imageFiles", true, "图片文件|*.jpg;*.jpeg;*.png;*.gif");
console.log("多选图片文件域已添加");
} catch (error) {
console.error("添加多选文件域失败:", error.message);
}
}
// 添加多个文件域
function addMultipleFileFields() {
try {
// 添加Word文档文件域
OCX_OBJ.AddFileToUploadFileAttachFileList("wordFiles", false, "Word文档|*.doc;*.docx");
// 添加Excel文档文件域
OCX_OBJ.AddFileToUploadFileAttachFileList("excelFiles", false, "Excel文档|*.xls;*.xlsx");
// 添加PDF文档文件域
OCX_OBJ.AddFileToUploadFileAttachFileList("pdfFiles", false, "PDF文档|*.pdf");
// 添加多选图片文件域
OCX_OBJ.AddFileToUploadFileAttachFileList("imageFiles", true, "图片文件|*.jpg;*.jpeg;*.png;*.gif");
console.log("多个文件域已添加");
} catch (error) {
console.error("添加多个文件域失败:", error.message);
}
}
// 动态添加文件域
function addDynamicFileField(fieldName, multiSelect, filter) {
try {
if (fieldName && filter) {
OCX_OBJ.AddFileToUploadFileAttachFileList(fieldName, multiSelect, filter);
console.log("动态文件域已添加:", fieldName);
} else {
console.error("无效的文件域参数");
}
} catch (error) {
console.error("动态添加文件域失败:", error.message);
}
}
GetUploadFileAttachFileCount
语法:
javascript
GetUploadFileAttachFileCount()
功能:
获取待上传附件文件总数。
返回值:
数值型;附件数量。
说明:
获取待上传附件文件总数。
使用示例:
javascript
// 获取附件文件总数
function getUploadFileCount() {
try {
var fileCount = OCX_OBJ.GetUploadFileAttachFileCount();
console.log("待上传附件文件总数:", fileCount);
return fileCount;
} catch (error) {
console.error("获取附件文件总数失败:", error.message);
return 0;
}
}
// 检查是否有附件文件
function checkHasAttachments() {
try {
var fileCount = OCX_OBJ.GetUploadFileAttachFileCount();
if (fileCount > 0) {
console.log("有附件文件,数量:", fileCount);
return true;
} else {
console.log("没有附件文件");
return false;
}
} catch (error) {
console.error("检查附件文件失败:", error.message);
return false;
}
}
// 验证附件文件数量
function validateAttachmentCount() {
try {
var fileCount = OCX_OBJ.GetUploadFileAttachFileCount();
var maxCount = 10; // 最大附件数量
if (fileCount > maxCount) {
console.log("附件文件数量超过限制:", fileCount, ">", maxCount);
return false;
} else {
console.log("附件文件数量正常:", fileCount);
return true;
}
} catch (error) {
console.error("验证附件文件数量失败:", error.message);
return false;
}
}
GetUploadFileAttachItemFile
语法:
javascript
GetUploadFileAttachItemFile(index)
功能:
根据索引值获取附件名。
参数:
名称 | 必选/可选 | 数据类型 | 说明 |
---|---|---|---|
index | 必选 | long | 文件索引ID |
返回值:
String型字符串。
说明:
获取的附件名包含完整路径及文件名。
使用示例:
javascript
// 获取指定索引的附件文件
function getAttachmentFile(index) {
try {
var fileName = OCX_OBJ.GetUploadFileAttachItemFile(index);
console.log("附件文件:", fileName);
return fileName;
} catch (error) {
console.error("获取附件文件失败:", error.message);
return "";
}
}
// 遍历所有附件文件
function listAllAttachments() {
try {
var fileCount = OCX_OBJ.GetUploadFileAttachFileCount();
var attachments = [];
for (var i = 0; i < fileCount; i++) {
var fileName = OCX_OBJ.GetUploadFileAttachItemFile(i);
attachments.push(fileName);
console.log("附件", i + 1, ":", fileName);
}
console.log("所有附件文件:", attachments);
return attachments;
} catch (error) {
console.error("遍历附件文件失败:", error.message);
return [];
}
}
// 获取附件文件信息
function getAttachmentInfo(index) {
try {
var fileName = OCX_OBJ.GetUploadFileAttachItemFile(index);
if (fileName) {
var fileInfo = {
index: index,
fileName: fileName,
filePath: fileName,
fileExtension: fileName.split('.').pop().toLowerCase()
};
console.log("附件文件信息:", fileInfo);
return fileInfo;
} else {
console.log("未找到指定索引的附件文件");
return null;
}
} catch (error) {
console.error("获取附件文件信息失败:", error.message);
return null;
}
}
附件删除
DeleAllFileFromUploadFileAttachFileList
语法:
javascript
DeleAllFileFromUploadFileAttachFileList()
功能:
清除所有待上传的附件文件。
返回值:
无返回值。
说明:
清除的文件包含调用上传方法时定义的所有文件域中的文件。
使用示例:
javascript
// 清除所有附件文件
function clearAllAttachments() {
try {
OCX_OBJ.DeleAllFileFromUploadFileAttachFileList();
console.log("所有附件文件已清除");
} catch (error) {
console.error("清除所有附件文件失败:", error.message);
}
}
// 重置附件列表
function resetAttachmentList() {
try {
// 清除所有附件文件
OCX_OBJ.DeleAllFileFromUploadFileAttachFileList();
// 重新添加文件域
OCX_OBJ.AddFileToUploadFileAttachFileList("documents", true, "文档文件|*.doc;*.docx;*.pdf");
console.log("附件列表已重置");
} catch (error) {
console.error("重置附件列表失败:", error.message);
}
}
DeleFieldFromUploadFileAttachFileList
语法:
javascript
DeleFieldFromUploadFileAttachFileList(FileFieldName)
功能:
删除指定文件域中的附件文件。
参数:
名称 | 必选/可选 | 数据类型 | 说明 |
---|---|---|---|
FileFieldName | 必选 | string | 文件域名称 |
返回值:
无返回值。
说明:
删除指定文件域中的附件文件。
使用示例:
javascript
// 删除指定文件域
function deleteFileField(fieldName) {
try {
OCX_OBJ.DeleFieldFromUploadFileAttachFileList(fieldName);
console.log("文件域已删除:", fieldName);
} catch (error) {
console.error("删除文件域失败:", error.message);
}
}
// 删除多个文件域
function deleteMultipleFileFields() {
try {
var fieldNames = ["wordFiles", "excelFiles", "pdfFiles"];
for (var i = 0; i < fieldNames.length; i++) {
OCX_OBJ.DeleFieldFromUploadFileAttachFileList(fieldNames[i]);
console.log("文件域已删除:", fieldNames[i]);
}
console.log("多个文件域已删除");
} catch (error) {
console.error("删除多个文件域失败:", error.message);
}
}
DeleFileFromUploadFileAttachFileList
语法:
javascript
DeleFileFromUploadFileAttachFileList(FileName)
功能:
删除指定文件名的附件文件。
参数:
名称 | 必选/可选 | 数据类型 | 说明 |
---|---|---|---|
FileName | 必选 | long | 文件名 |
返回值:
无返回值。
说明:
参数FileName:必须包含完整路径及文件名。
使用示例:
javascript
// 删除指定文件名的附件
function deleteAttachmentFile(fileName) {
try {
OCX_OBJ.DeleFileFromUploadFileAttachFileList(fileName);
console.log("附件文件已删除:", fileName);
} catch (error) {
console.error("删除附件文件失败:", error.message);
}
}
// 删除多个指定文件
function deleteMultipleFiles() {
try {
var fileNames = [
"D:\\document1.docx",
"D:\\document2.pdf",
"D:\\image1.jpg"
];
for (var i = 0; i < fileNames.length; i++) {
OCX_OBJ.DeleFileFromUploadFileAttachFileList(fileNames[i]);
console.log("文件已删除:", fileNames[i]);
}
console.log("多个文件已删除");
} catch (error) {
console.error("删除多个文件失败:", error.message);
}
}
DelUploadFileAttachItemFile
语法:
javascript
DelUploadFileAttachItemFile(index)
功能:
删除指定索引的附件文件。
参数:
名称 | 必选/可选 | 数据类型 | 说明 |
---|---|---|---|
index | 必选 | long | 文件索引ID |
返回值:
无返回值。
说明:
删除指定索引的附件文件。
使用示例:
javascript
// 删除指定索引的附件
function deleteAttachmentByIndex(index) {
try {
OCX_OBJ.DelUploadFileAttachItemFile(index);
console.log("索引", index, "的附件已删除");
} catch (error) {
console.error("删除指定索引附件失败:", error.message);
}
}
// 删除多个索引的附件
function deleteMultipleAttachmentsByIndex() {
try {
var indices = [0, 2, 4]; // 要删除的索引
for (var i = 0; i < indices.length; i++) {
OCX_OBJ.DelUploadFileAttachItemFile(indices[i]);
console.log("索引", indices[i], "的附件已删除");
}
console.log("多个索引的附件已删除");
} catch (error) {
console.error("删除多个索引附件失败:", error.message);
}
}
// 删除最后一个附件
function deleteLastAttachment() {
try {
var fileCount = OCX_OBJ.GetUploadFileAttachFileCount();
if (fileCount > 0) {
var lastIndex = fileCount - 1;
OCX_OBJ.DelUploadFileAttachItemFile(lastIndex);
console.log("最后一个附件已删除,索引:", lastIndex);
} else {
console.log("没有附件文件可删除");
}
} catch (error) {
console.error("删除最后一个附件失败:", error.message);
}
}
方法分类总结
分类 | 方法 | 功能 | 说明 |
---|---|---|---|
附件添加 | AddFileToUploadFileAttachFileList | 添加准备上传的附件文件 | 文件域管理 |
附件查询 | GetUploadFileAttachFileCount | 获取待上传附件文件总数 | 数量统计 |
GetUploadFileAttachItemFile | 根据索引值获取附件名 | 文件信息获取 | |
附件删除 | DeleAllFileFromUploadFileAttachFileList | 清除所有待上传的附件文件 | 全部清除 |
DeleFieldFromUploadFileAttachFileList | 删除指定文件域中的附件文件 | 按域删除 | |
DeleFileFromUploadFileAttachFileList | 删除指定文件名的附件文件 | 按名删除 | |
DelUploadFileAttachItemFile | 删除指定索引的附件文件 | 按索引删除 |
使用流程
1. 基本附件管理流程
javascript
// 基本附件管理流程
function basicAttachmentManagement() {
try {
// 添加文件域
OCX_OBJ.AddFileToUploadFileAttachFileList("documents", true, "文档文件|*.doc;*.docx;*.pdf");
// 获取附件数量
var fileCount = OCX_OBJ.GetUploadFileAttachFileCount();
console.log("附件数量:", fileCount);
// 遍历附件文件
for (var i = 0; i < fileCount; i++) {
var fileName = OCX_OBJ.GetUploadFileAttachItemFile(i);
console.log("附件", i + 1, ":", fileName);
}
console.log("基本附件管理流程完成");
} catch (error) {
console.error("基本附件管理流程失败:", error.message);
}
}
2. 附件上传流程
javascript
// 附件上传流程
function attachmentUploadFlow() {
try {
// 添加多个文件域
OCX_OBJ.AddFileToUploadFileAttachFileList("wordFiles", false, "Word文档|*.doc;*.docx");
OCX_OBJ.AddFileToUploadFileAttachFileList("excelFiles", false, "Excel文档|*.xls;*.xlsx");
OCX_OBJ.AddFileToUploadFileAttachFileList("imageFiles", true, "图片文件|*.jpg;*.jpeg;*.png");
// 获取总附件数量
var totalCount = OCX_OBJ.GetUploadFileAttachFileCount();
console.log("总附件数量:", totalCount);
// 处理每个附件
for (var i = 0; i < totalCount; i++) {
var fileName = OCX_OBJ.GetUploadFileAttachItemFile(i);
console.log("处理附件:", fileName);
}
console.log("附件上传流程完成");
} catch (error) {
console.error("附件上传流程失败:", error.message);
}
}
3. 附件清理流程
javascript
// 附件清理流程
function attachmentCleanupFlow() {
try {
// 获取当前附件数量
var fileCount = OCX_OBJ.GetUploadFileAttachFileCount();
console.log("清理前附件数量:", fileCount);
// 删除指定文件域
OCX_OBJ.DeleFieldFromUploadFileAttachFileList("tempFiles");
// 清除所有附件
OCX_OBJ.DeleAllFileFromUploadFileAttachFileList();
// 验证清理结果
var remainingCount = OCX_OBJ.GetUploadFileAttachFileCount();
console.log("清理后附件数量:", remainingCount);
console.log("附件清理流程完成");
} catch (error) {
console.error("附件清理流程失败:", error.message);
}
}
完整示例
1. 基础附件管理
javascript
// 基础附件管理示例
function basicAttachmentManagement() {
try {
// 添加文件域
OCX_OBJ.AddFileToUploadFileAttachFileList("documents", true, "文档文件|*.doc;*.docx;*.pdf");
// 获取附件信息
var fileCount = OCX_OBJ.GetUploadFileAttachFileCount();
console.log("附件管理完成,文件数量:", fileCount);
} catch (error) {
console.error("基础附件管理失败:", error.message);
}
}
2. 高级附件管理
javascript
// 高级附件管理示例
function advancedAttachmentManagement() {
try {
// 附件管理配置
var attachmentConfig = {
fileFields: [
{ name: "wordFiles", multiSelect: false, filter: "Word文档|*.doc;*.docx" },
{ name: "excelFiles", multiSelect: false, filter: "Excel文档|*.xls;*.xlsx" },
{ name: "imageFiles", multiSelect: true, filter: "图片文件|*.jpg;*.jpeg;*.png;*.gif" }
],
maxFileCount: 20,
allowedExtensions: [".doc", ".docx", ".xls", ".xlsx", ".pdf", ".jpg", ".jpeg", ".png", ".gif"]
};
// 添加文件域
for (var i = 0; i < attachmentConfig.fileFields.length; i++) {
var field = attachmentConfig.fileFields[i];
OCX_OBJ.AddFileToUploadFileAttachFileList(field.name, field.multiSelect, field.filter);
}
// 获取附件信息
var fileCount = OCX_OBJ.GetUploadFileAttachFileCount();
console.log("高级附件管理完成,文件数量:", fileCount);
// 验证文件数量限制
if (fileCount > attachmentConfig.maxFileCount) {
console.log("文件数量超过限制,需要清理");
OCX_OBJ.DeleAllFileFromUploadFileAttachFileList();
}
} catch (error) {
console.error("高级附件管理失败:", error.message);
}
}
3. 附件质量控制
javascript
// 附件质量控制示例
function attachmentQualityControl() {
try {
// 获取附件数量
var fileCount = OCX_OBJ.GetUploadFileAttachFileCount();
// 检查附件质量
var validAttachments = [];
var invalidAttachments = [];
for (var i = 0; i < fileCount; i++) {
var fileName = OCX_OBJ.GetUploadFileAttachItemFile(i);
var fileExtension = fileName.split('.').pop().toLowerCase();
// 检查文件扩展名
var allowedExtensions = [".doc", ".docx", ".xls", ".xlsx", ".pdf", ".jpg", ".jpeg", ".png", ".gif"];
var isValid = allowedExtensions.includes("." + fileExtension);
if (isValid) {
validAttachments.push(fileName);
} else {
invalidAttachments.push(fileName);
}
}
console.log("有效附件:", validAttachments);
console.log("无效附件:", invalidAttachments);
// 删除无效附件
for (var i = 0; i < invalidAttachments.length; i++) {
OCX_OBJ.DeleFileFromUploadFileAttachFileList(invalidAttachments[i]);
}
console.log("附件质量控制完成");
} catch (error) {
console.error("附件质量控制失败:", error.message);
}
}
注意事项
- 文件域管理:可以根据文件类型或用途不同,反复定义添加多个文件域
- 文件路径:获取的附件名包含完整路径及文件名
- 索引管理:文件索引从0开始,需要正确处理索引范围
- 文件过滤:过滤字符串格式为"描述|后缀名",多个后缀用";"分隔
- 错误处理:实现完善的错误处理机制
- 性能考虑:大量附件时注意性能优化
- 安全考虑:验证文件类型和大小,防止安全风险
错误处理
javascript
// 附件管理错误处理
function handleAttachmentError(operation, error) {
console.error("附件管理失败:", operation, error.message);
switch(operation) {
case 'AddFileToUploadFileAttachFileList':
console.log("添加文件域失败,请检查:");
console.log("1. 文件域名称是否有效");
console.log("2. 过滤字符串格式是否正确");
console.log("3. 是否支持多选设置");
break;
case 'GetUploadFileAttachFileCount':
console.log("获取附件数量失败,请检查:");
console.log("1. 控件是否已正确初始化");
console.log("2. 是否有附件文件");
break;
case 'GetUploadFileAttachItemFile':
console.log("获取附件文件失败,请检查:");
console.log("1. 索引是否在有效范围内");
console.log("2. 附件文件是否存在");
break;
case 'DeleAllFileFromUploadFileAttachFileList':
console.log("清除所有附件失败,请检查:");
console.log("1. 是否有权限删除文件");
console.log("2. 文件是否被其他程序占用");
break;
default:
console.log("未知附件管理操作失败");
}
}
最佳实践
1. 附件管理最佳实践
javascript
// 附件管理最佳实践
function attachmentManagementBestPractice() {
try {
// 附件管理配置
var attachmentConfig = {
fileFields: [
{ name: "documents", multiSelect: true, filter: "文档文件|*.doc;*.docx;*.pdf" },
{ name: "images", multiSelect: true, filter: "图片文件|*.jpg;*.jpeg;*.png;*.gif" }
],
maxFileCount: 50,
maxFileSize: 10 * 1024 * 1024 // 10MB
};
// 应用附件管理配置
function applyAttachmentConfig() {
try {
// 添加文件域
for (var i = 0; i < attachmentConfig.fileFields.length; i++) {
var field = attachmentConfig.fileFields[i];
OCX_OBJ.AddFileToUploadFileAttachFileList(field.name, field.multiSelect, field.filter);
}
console.log("附件管理配置应用成功");
} catch (error) {
handleAttachmentError('AddFileToUploadFileAttachFileList', error);
}
}
// 应用配置
applyAttachmentConfig();
} catch (error) {
console.error("附件管理最佳实践失败:", error.message);
}
}
2. 附件质量控制最佳实践
javascript
// 附件质量控制最佳实践
function attachmentQualityControlBestPractice() {
try {
// 附件质量控制
function controlAttachmentQuality() {
try {
// 获取附件数量
var fileCount = OCX_OBJ.GetUploadFileAttachFileCount();
// 检查附件质量
var qualityReport = {
totalFiles: fileCount,
validFiles: 0,
invalidFiles: 0,
removedFiles: []
};
for (var i = fileCount - 1; i >= 0; i--) {
var fileName = OCX_OBJ.GetUploadFileAttachItemFile(i);
var fileExtension = fileName.split('.').pop().toLowerCase();
// 检查文件扩展名
var allowedExtensions = [".doc", ".docx", ".xls", ".xlsx", ".pdf", ".jpg", ".jpeg", ".png", ".gif"];
var isValid = allowedExtensions.includes("." + fileExtension);
if (isValid) {
qualityReport.validFiles++;
} else {
qualityReport.invalidFiles++;
qualityReport.removedFiles.push(fileName);
OCX_OBJ.DelUploadFileAttachItemFile(i);
}
}
console.log("附件质量控制完成:", qualityReport);
return qualityReport;
} catch (error) {
console.error("附件质量控制失败:", error.message);
return null;
}
}
// 执行质量控制
var qualityResult = controlAttachmentQuality();
console.log("附件质量控制结果:", qualityResult);
} catch (error) {
console.error("附件质量控制最佳实践失败:", error.message);
}
}
技术要点
- 文件域管理:可以根据文件类型或用途不同,反复定义添加多个文件域
- 文件路径:获取的附件名包含完整路径及文件名
- 索引管理:文件索引从0开始,需要正确处理索引范围
- 文件过滤:过滤字符串格式为"描述|后缀名",多个后缀用";"分隔
- 错误处理:完善的错误处理机制
- 性能优化:大量附件时注意性能优化
- 安全控制:验证文件类型和大小,防止安全风险
总结
附件上传相关方法为软航OFFICE文档控件提供了完整的附件管理功能。通过AddFileToUploadFileAttachFileList方法可以添加文件域,通过GetUploadFileAttachFileCount方法可以获取附件数量,通过GetUploadFileAttachItemFile方法可以获取附件信息,通过DeleAllFileFromUploadFileAttachFileList方法可以清除所有附件,通过DeleFieldFromUploadFileAttachFileList方法可以删除指定文件域,通过DeleFileFromUploadFileAttachFileList方法可以删除指定文件,通过DelUploadFileAttachItemFile方法可以删除指定索引的附件,为开发者提供了灵活的附件管理接口,大大提升了文档管理系统的附件处理能力。