Hello,
you're recommended to use the DotNetNuke API's rather than direct file access code. There are a number of reasons for this
- the API's will apply various security checks automatically (e.g. safe list of extensions, if the file is within a certain size etc.)
- the API's will also reflect permissions e.g. if a user "chris" tries to execute code to upload to a folder it will validate that the user has permissions to that folder
- most importantly - DotNetNuke files are not just physical entries, they have a database component as well which is basically the abstractly file system. This means that files can have different properties and allows for support of standard, secure file system (automatic appending of .resources so files cant be directly accessed) and secure database (store in a database). Using the proper API's this relationship is maintained. If you dont use them you will have to either invoke a SynchronizeFolder method or manually sync in the filemanager.
Unfortunately you never mentioned what version you're targetting. If it's pre DotNetNuke 6.0, then the key class is FileSystemUtils - it'll contain all the various getfolder/getfolders/copyfile/movefile/deletefile etc. However in 6.0 we added support for folder and file providers (see http://www.dotnetnuke.com/Resources/W... ) which makes this class effectively obsolete i.e. you can still code against it (and if you're targetting pre 6.0 installs you have to), but you're recommended to use the new API's so that any alternative folder providers (e.g Azure, dropbox, s3 etc.) will work with your uploaded files/folders.
DotNetNuke does register who created/modified a file/folder and when but it's user based not module based - if your module needs to store this info you'll have to roll that part yourself. Note: when you add files to download somewhere, the control that does that allows you to check a box to track the downloads (this is possible as all access goes through linkclick.aspx - note: you can access the data in the urltracking table to see clicks, lastclick, activity etc.)
You can get lists of files and folders but normally everything is based on your portal and in the case of the files the approriate folder. Of course you can return lists of these fileinfo and folderinfo objects and apply your own filtering e.g. a linq expression
There is a zip component within DotNetNuke and we do support unzipping of packages but AFAIR there is no code for creating zip packages, you can of course write that yourself just reference the icsharpziplib library.
In general I'd recommend you take a look at the file manager code as it uses most functions - you'll find the code in
DesktopModules\Admin\FileManager\ and the relevant file is called FileManager.ascx.cs/filemanager.ascx.vb (depending on version)
Thanks.