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("圖片上傳完成!");
                        }
                    }

這是上傳做的處理

好啦,大概核心就是通過轉換數組來對內容進行處理

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章