需求是需要一次能上傳多個文件,現在是隻能上傳一個文件,通過數組實現,首先
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("圖片上傳完成!");
}
}
這是上傳做的處理
好啦,大概核心就是通過轉換數組來對內容進行處理