文件上传处理办法
1、所有上传的资源文件存储在阿里云OSS上面,一共分为三个大区域:temp、comm、enterprise。
- temp为临时存储区域,在上传时存储到temp区域,待后端业务逻辑处理后迁移到comm或者 enterprise中,temp区域的文件会定时删除!
- comm为公共区域。管理后台及程序引用的js、css、图片等
- enterprise为企业用户自己的区域。凡是在工作台和企业后台上传的资源最终都存储在该区域中。
2、管理后台上传的资源存储在comm区域,前端代码无需修改,仅后端代码上传之后需要做移动资源的处理。以帮助文档为例:
- 前端上传地址为:/comm/comm/upload
- 控制器的新增、修改保存之后执行 _helpFile.MoveImg(model) 方法
- 对应BLL层 MoveImg 方法为:
public void MoveImg(Admin.Models.Business.HelpFile model) { var doc = HtmlParser.Parse(model.Contents); var imgs = doc.getElementsByTagName("img"); if (imgs != null) { foreach (var item in imgs) { try { string src = item.getAttribute("src"); src = XYHLObject.MoveTempFile(src, string.Format(ResourcePath.HelpFile, model.Id), true); item.setAttribute("src", src); } catch { throw; } } model.Contents = doc.ToString(); } Save(model); }
3、工作台和企业后台上传需要前后台配合完成,相关接口文档参见 http://192.168.1.131/repository/editor?id=16&mod=54&itf=564 。具体开发流程如下:
- 前端设置上传url为:/comm/res/upload 。
- 上传成功后返回的数据为:
123456789101112
{
"data"
: {
"fileName"
:
"文件名称"
,
"fileSize"
: 文件大小,
"thumbnail"
:
"缩略图,非图片类型是返回类型图标,图片是返回64*64大小的图片"
,
"isImage"
: 是否是图片,
"id"
:
"资源Id"
,
"url"
:
"资源访问地址"
},
"msg"
:
"操作成功"
,
"statusCode"
: 100
}
-
前端业务向后端提交数据时仅提交资源id即可。
- 后端业务处理时根据需要将资源存储在 enterprise 区域的指定位置。
- 前端在访问资源url为:https://www.hqxz360.com/comm/res/show?id=1&min=0&w=64&h=64 。min为是否缩略图显示,w为缩略图的宽度,h为缩略图的高度。
- 任务创建后的附件上传时需要携带任务id及类型,在上传接口文档中有说明。