Click here to Skip to main content
15,897,226 members
Please Sign up or sign in to vote.
5.00/5 (1 vote)
See more:
Hi,

I'm working on a project where I need the application to have some document management capabilities. Some of the features I'm looking at are like:

1. User can upload various types of files(majorly document files e.g. document,presentation,spreadsheets,text document, etc.).

2. He/She should be able to categorize through some tags or should be given functionality to have in separate folders.

3. I've created the file upload facility. Currently I'm storing the user uploaded file in a file system. Where each user's files are kept together. Is there a better way to keep them in separate user wise directories or should I use any DB storage scenario...?? Separation is for security and better manageability.

4. User should be able to retrieve a file whenever he needs.

I came across some of the ready made solutions which can do such things like (Sharpoint, DotnetNuke, MojoPortal, etc..) But I'm more keen into understanding the core concepts of DMS and build something custom in native C#.

If anyone can give me a good head-start, some examples or the classes and resources used to build such solution would be of great help.


Thanks & Regards,
Jaydeep
Posted

I have done a similar project before in LAMP. These are my suggestion:

1. Use file system as the storage of documents.
2. Create a separate main folder for each user. This main folder name could be based on the unique sign-in id of the user.
3. When a user creates a category or tag , they will be added as a sub-folder in his main folder.

In this way, only authenticated user can access his own main folder and everything in it.
 
Share this answer
 
If your application users are not your server/machine users (users manage by your custom/membership database) then need to do something for better security.

Step 1> You can create/select a machine/server user and access permission(read/modify) to the root of the directory where you can store users document.

Step 2> Create/manage all sub directories under that root dirctory accroding to user and document category. for example
d:\documents > u001 > hrm > habibcv.docx
Here documents is the root directory, u001 is the unique user id, hrm is the document category, habibcv.docx is the document. In this case you will create documents directory for application deployment time. Remaining directory need to create when user upload document (if sub directories does not exists)
Another way you can organize your directory structure
d:\documents > hrm > u001 > habibcv.docx
in this case documents and all category directory will be created when application is deployed. Remaining users directory will be created at run-time when user upload document (if not exists directory)

step 3> Runtime from your application, you can impersonate your application user to that machine user for accessing (create directory, read/write files etc) that file-system directories.
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900