winform实现多文件上传

需求是需要一次能上传多个文件,现在是只能上传一个文件,通过数组实现,首先

 OpenFileDialog fa = new OpenFileDialog();//文件对话框
  fa.Multiselect = true;//是否允许上传多个

这样设置就可以实现在文件对话框选择多个文件了,然后在页面去实现,首先在对话框选择之后需要在控件里显示几个文件的路径,通过数组然后循环实现

 OpenFileDialog fa = new OpenFileDialog();
                fa.Multiselect = true;
                fa.Filter = "img files|*.jpeg;*.jpg;*.png;*.gif;*.pdf;*.doc;*.docx;*.xlsx;*.xls;*.pdf";
                if (fa.ShowDialog(this) == DialogResult.OK)
                {
                    string[] strNames = fa.FileNames;
                    string currentImgFileName = "";
                    string currentFileName = "";
                    for (int i = 0; i < strNames.Length; i++)
                    {
                        if (i == strNames.Length - 1)
                       {
                            currentFileName += strNames[i];
                        }
                       else
                        {
                            currentFileName += strNames[i]+',';
                        }

                        txtImageUrl.EditValue = currentFileName;
                        string filePath = txtImageUrl.EditValue.ToString();
                        string fileName = filePath.Substring(filePath.LastIndexOf("\\") + 1, filePath.Length - filePath.LastIndexOf("\\") - 1);

                        if (i == strNames.Length - 1)
                        {
                           currentImgFileName += fileName;
                        }
                       else
                        {
                          currentImgFileName += fileName + ',';
                      }
                    }

这是具体代码,这样就可以在控件里显示单个和多个的文件路径了,接下来需要将获取到的文件路径截取名保存到数据库里

 string filePath = txtImageUrl.EditValue.ToString();
                            string fileName = filePath.Substring(filePath.LastIndexOf("\\") + 1, filePath.Length - filePath.LastIndexOf("\\") - 1);
                            string[] result = filePath.Split(',');
                           for (var i = 0; i < result.Length; i++)
                            {
                                var name = result[i].Substring(result[i].LastIndexOf("\\")+1);
                             if (i == result.Length - 1)
                                {
                                    row["IMGURL"] += name;
                                }
                                else
                                {
                                    row["IMGURL"] += name + ',';
                                }
                            }
                        }

在传值的时候需要做这样的处理按照对应格式保存到数据库,最后在点击上传预览的时候也需要做对应的处理上传,上传那块就是获取控件的值,对控件的值做处理,将获取到的值转换成数组类型然后进行操作

if (txtImageUrl.EditValue == null || string.IsNullOrEmpty(txtImageUrl.EditValue.ToString()))
                {
                    //如果当前图片内容为空,但之前有图片,点击了预览上传,系统默认将之前图片进行删除
                    if (!string.IsNullOrEmpty(oldImgFileName))
                    {
                        FTPHelper.DelFile(TrConstant.ITEMCHECKITEMIMG_FOLER, oldImgFileName);    //删除原有图片
                    }
                    ShowMessageBox("请选择图片附件进行预览上传!");
                }
                else
                {
                    if (!string.IsNullOrEmpty(oldImgFileName) && !string.IsNullOrEmpty(txtImageUrl.EditValue.ToString()))
                    {
                        string imagename = txtImageUrl.EditValue.ToString();
                        string[] strNames = imagename.Split(',');
                        for (int i = 0; i < strNames.Length; i++)
                        {
                            FTPHelper.DelFile(TrConstant.ITEMCHECKITEMIMG_FOLER, oldImgFileName);    //删除原有图片
                            FTPHelper.UploadFile(TrConstant.ITEMCHECKITEMIMG_FOLER, new FileInfo(strNames[i]));
                            //上传成功后,下载进行预览
                            string filePath = TrConstant.STARTAPP_PATH + TrConstant.ITEMCHECKITEMIMG_FOLER + "\\" + strNames[i];//文件下载之后要保存的路径和文件名
                            FTPHelper.Preview(TrConstant.ITEMCHECKITEMIMG_FOLER + "\\" + strNames[i], filePath);
                            LocalPreviewImg(filePath);
                        }
                    }

这是预览做的处理

同理上传也需要

 if (txtImageUrl.EditValue == null || string.IsNullOrEmpty(txtImageUrl.EditValue.ToString()))
                {
                    //如果当前图片内容为空,但之前有图片,点击了上传,系统默认将之前图片进行删除
                    if (!string.IsNullOrEmpty(oldImgFileName))
                    {
                        FTPHelper.DelFile(TrConstant.ITEMCHECKITEMIMG_FOLER, oldImgFileName);    //删除原有图片
                    }
                }
                else
                {
                    if (!string.IsNullOrEmpty(oldImgFileName)  && !string.IsNullOrEmpty(txtImageUrl.EditValue.ToString()))
                    {
                    //    FTPHelper.DelFile(TrConstant.ITEMCHECKITEMIMG_FOLER, oldImgFileName);    //删除原有图片
                        string imagename = txtImageUrl.EditValue.ToString();
                        string[] strNames = imagename.Split(',');
                        for (int i = 0; i < strNames.Length; i++)
                        {
                            FTPHelper.UploadFile(TrConstant.ITEMCHECKITEMIMG_FOLER, new FileInfo(strNames[i]));
                            ShowMessageBox("图片上传完成!");
                        }
                    }

这是上传做的处理

好啦,大概核心就是通过转换数组来对内容进行处理

展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读