//编辑帖子时如果进行了批量删除附件
string delAttId = DNTRequest.GetFormString("deleteaid");
if (delAttId != string.Empty)
{
if (Utils.IsNumericArray(delAttId.Split(',')))//如果要删除的附件ID列表为数字数组
{
GoodsAttachments.DeleteGoodsAttachment(delAttId);
}
}
//编辑帖子时如果进行了更新附件操作
string updatedAttId = DNTRequest.GetFormString("attachupdatedid");//被更新的附件Id列表
string updateAttId = DNTRequest.GetFormString("attachupdateid");//所有已上传的附件Id列表
string[] descriptionArray = DNTRequest.GetFormString("attachupdatedesc").Split(',');//所有已上传的附件的描述
string[] readpermArray = DNTRequest.GetFormString("attachupdatereadperm").Split(',');//所有已上传得附件的阅读权限
ArrayList updateAttArrayList = new ArrayList();
if (updateAttId != string.Empty)
{
foreach (string s in updateAttId.Split(','))
{
if (!Utils.InArray(s, delAttId, ","))//已上传的附件Id不在被删除的附件Id列表中时
{
updateAttArrayList.Add(s);
}
}
}
string[] updateAttArray = (string[])updateAttArrayList.ToArray(typeof(string));
if (updateAttId != string.Empty)//原来有附件
{
int watermarkstate = config.Watermarkstatus;
if (forum.Disablewatermark == 1)
watermarkstate = 0;
string[] updatedAttArray = updatedAttId.Split(',');
string filekey = "attachupdated";
//保存新的文件
Goodsattachmentinfo[] attArray = Discuz.Mall.MallUtils.SaveRequestFiles(
goodsinfo.Categoryid, config.Maxattachments + updateAttArray.Length,
usergroupinfo.Maxsizeperday, usergroupinfo.Maxattachsize, MaxTodaySize,
attachextensions, watermarkstate, config, filekey);
if (Utils.IsNumericArray(updateAttArray))
{
for (int i = 0; i < updateAttArray.Length; i++) //遍历原来所有附件
{
string attachmentId = updateAttArray;
if (Utils.InArray(attachmentId, updatedAttArray)) //附件文件被更新
{
if (Utils.InArray(attachmentId, delAttId, ","))//附件进行了删除操作, 则不操作此附件,即使其也被更新
{
continue;
}
//更新附件
int attachmentUpdatedIndex = GetAttachmentUpdatedIndex(attachmentId, updatedAttArray);//获取此次上传的被更新附件在数组中的索引
if (attachmentUpdatedIndex > -1)//附件索引存在
{
if (attArray[attachmentUpdatedIndex].Sys_noupload.Equals(string.Empty)) //由此属性为空可以判断上传成功
{
//获取将被更新的附件信息
Goodsattachmentinfo attachmentInfo =
GoodsAttachments.GetGoodsAttachmentsByAid(
Utils.StrToInt(updatedAttArray[attachmentUpdatedIndex], 0));
if (attachmentInfo != null)
{
if (attachmentInfo.Filename.Trim().ToLower().IndexOf("http") < 0)
{
//删除原来的文件
File.Delete(
Utils.GetMapPath(BaseConfigs.GetForumPath + "upload/" +
attachmentInfo.Filename));
}
//记住Aid以便稍后更新
attArray[attachmentUpdatedIndex].Aid = attachmentInfo.Aid;
attArray[attachmentUpdatedIndex].Description = descriptionArray;
int att_readperm = Utils.StrToInt(readpermArray, 0);
att_readperm = att_readperm > 255 ? 255 : att_readperm;
attArray[attachmentUpdatedIndex].Readperm = att_readperm;
attArray[attachmentUpdatedIndex].Categoryid = attachmentInfo.Categoryid;
attArray[attachmentUpdatedIndex].Goodscount = attachmentInfo.Goodscount;
attArray[attachmentUpdatedIndex].Goodsid = attachmentInfo.Goodsid;
GoodsAttachments.SaveGoodsAttachment(attArray[attachmentUpdatedIndex]);
}
}
else //上传失败的附件,稍后提示
{
sb.Append("<tr><td align=\"left\">");
sb.Append(attArray[attachmentUpdatedIndex].Attachment);
sb.Append("</td>");
sb.Append("<td align=\"left\">");
sb.Append(attArray[attachmentUpdatedIndex].Sys_noupload);
sb.Append("</td></tr>");
}
}
}
else //仅修改了阅读权限和描述等
{
if (Utils.InArray(updateAttArray, delAttId, ","))
{
continue;
}
if ((attachmentlist.Readperm.ToString() != readpermArray) ||
(attachmentlist.Description.Trim() != descriptionArray))
{
int att_readperm = Utils.StrToInt(readpermArray, 0);
att_readperm = att_readperm > 255 ? 255 : att_readperm;
GoodsAttachments.SaveGoodsAttachment(Utils.StrToInt(updateAttArray, 0), att_readperm,
descriptionArray);
}
}
}
}
}
int watermarkstatus = config.Watermarkstatus;
if (forum.Disablewatermark == 1)
{
watermarkstatus = 0;
}
Goodsattachmentinfo[] attachmentinfo = Discuz.Mall.MallUtils.SaveRequestFiles(forumid,
config.Maxattachments, usergroupinfo.Maxsizeperday, usergroupinfo.Maxattachsize,
MaxTodaySize, attachextensions, watermarkstatus, config, "postfile");
if (attachmentinfo != null)
{
if (attachmentinfo.Length > config.Maxattachments)
{
AddErrLine("系统设置为每个商品附件不得多于" + config.Maxattachments + "个");
return;
}
int errorAttachment = GoodsAttachments.BindAttachment(attachmentinfo, goodsinfo.Goodsid, sb,
goodsinfo.Categoryid, userid);
int[] aid = GoodsAttachments.CreateAttachments(attachmentinfo);
string tempMessage = GoodsAttachments.FilterLocalTags(aid, attachmentinfo, goodsinfo.Message);
if (attachmentinfo.Length == (System.Web.HttpContext.Current.Request.Files.Count-2))
{
goodsinfo.Goodspic = attachmentinfo[0].Filename;
goodsinfo.Aid = aid[0];
}
if (!tempMessage.Equals(goodsinfo.Message))
{
goodsinfo.Message = tempMessage;
}
Goods.UpdateGoods(goodsinfo);
UserCredits.UpdateUserCreditsByUploadAttachment(userid, aid.Length - errorAttachment);
}