程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 使用 IntraWeb (24)

使用 IntraWeb (24)

編輯:Delphi


TIWFileUploader 是基於 Ajax 的上傳控件, 最初是 Andrew Valums 開發, 從 IntraWeb XIV 納入並替換 TIWFile.

雖然從組件面板上還能看到 TIWFile, 官方說已不能使用.

現在的 TIWFileUploader 非常方便, 能拖拽上傳, 能批量上傳, 會自動顯示上傳進度, 界面也可以很漂亮.

我測試拖拽上傳時, 發現有些浏覽器不支持.



TIWFileUploader 所在單元及繼承鏈:
IWCompFileUploader.TIWFileUploader < TIWCustomFileUploader < TIWCustomControl < TIWBaseHTMLControl < TIWBaseControl < TIWVCLBaseControl < TControl < TComponent < TPersistent < TObject

主要成員:
property MaxFileSize: Int64      //文件最大許可, 默認 20971520(20MB); 如果為 0, 則表示沒有最大限制
property MinFileSize: Int64      //文件最小許可, 默認 0, 表示沒有最小限制
property Multiple: Boolean       //是否支持多個文件同時上傳, 默認 False
property AutoHideListTime: Cardinal  //上傳後等待多少毫秒既隱藏上傳列表; 默認 0, 表示不隱藏.
property TextStrings: TIWFileUploaderTextStrings //這包含 12 項信息文本, 可以通過它徹底地本地化
property Style: TIWFileUploaderStyle //它包含 7 個子選項, 可設置各種狀態下的樣式, 能弄得很漂亮
property AllowedExtensions: string   //支持上傳的文件類型, 多種類型用逗號分割, 如: rar,zip,pdf,mp3; 默認為空, 表示支持任何文件
property AutoSave: Boolean      //上傳完成後是否自動保存到 AutoSavePath 指示的文件夾
property AutoSavePath: string   //用於自動保存的文件夾, 如果不存在會創建; 如果出錯會保存在用戶的緩存文件夾
property OverwriteExisting: Boolean  //是否覆蓋同名文件, 默認 True; False 時遇同名會引發異常
property DisableCancel: Boolean	//在上傳過程中, 是否禁用"取消", 默認 False
property FileList: THttpFileList //?
property AcceptFiles: string	 //?

property OnAsyncUploadCompleted: TUploadCompleteEvent //該事件在上傳完畢後自動保存前觸發; 可以在該事件中更改路徑或文件名, 甚至取消保存
property OnAsyncUploadSuccess: TIWAsyncEvent	      //成功完成後
property OnAsyncUploadError: TIWAsyncEvent	      //出錯時

{下面三個保存方法都應該用在 OnAsyncUploadCompleted 中}
function SaveAll(APathname: string; AOverwrite: Boolean)  //如果還是使用源文件名, 應該用這個
function SaveToFile(ASourceFileName: string; ADestFileName: TFileName; AOverwrite: Boolean) //假如要更改文件名, 用這個
function SaveToStream(ASourceFileName: string; AStream: TStream)  //
procedure NotifyUploadCompleted	//                              


測試 1(全自動上傳):
uses ServerController;

procedure TIWForm1.IWAppFormCreate(Sender: TObject);
begin
  IWFileUploader1.MaxFileSize := 0; //不限制大文件
  IWFileUploader1.Multiple := True; //可以同時上傳多個文件
  IWFileUploader1.AutoSave := True; //自動保存
  IWFileUploader1.AutoSavePath := IWServerController.ContentPath; //這是 wwwroot, 需要修改文件夾屬性, 可寫才行
end;


測試 2(在 OnUploadCompleted 事件中保存):
uses ServerController;

procedure TIWForm1.IWAppFormCreate(Sender: TObject);
begin
  IWFileUploader1.MaxFileSize := 0;
  IWFileUploader1.Multiple := True;
  IWFileUploader1.AutoSavePath := IWServerController.ContentPath;
end;

//OnUploadCompleted 的參數解釋:
//DestPath 同 AutoSavePath
//FileName 同源文件名
//SaveFile 它會是 True,
//Overwrite 同 OverwriteExisting
procedure TIWForm1.IWFileUploader1AsyncUploadCompleted(Sender: TObject; var DestPath, FileName: string; var SaveFile, Overwrite: Boolean);
begin
  IWFileUploader1.SaveAll(DestPath, Overwrite);
  SaveFile := False; //如果前面設置了自動保存, 就取消它
end;


轉帖幾張官方的圖片吧:










  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved