2013-10-16 16 views
6

Im xây dựng một ứng dụng MVC4 bằng cách sử dụng một cấu trúc cơ sở dữ liệu đa đối tượng thuê riêng biệt. Khách hàng cũng có tùy chọn tải tệp lên (chủ yếu là kích thước 1-5MB, văn bản/tài liệu).Nơi lưu trữ các tệp do người dùng tải lên trong ứng dụng web asp.net MVC 4?

Tôi kết luận rằng tốt hơn để lưu trữ tệp trong hệ thống tệp trong khi vẫn giữ siêu dữ liệu trong cơ sở dữ liệu (thư mục riêng biệt cho từng khách hàng), tuy nhiên, tôi không biết đầu mối lưu trữ tệp. MVC có vị trí đặc biệt cho việc này không? Hoặc tôi nên tạo một thư mục trên máy chủ ở đâu đó.

Và tạo các thư mục như thế này là an toàn theo mặc định?

Cảm ơn!

Trả lời

4

Cá nhân, tôi sẽ nói rằng quyết định đó phải dựa trên các yêu cầu đăng ký của bạn.

Khi tôi xây dựng ứng dụng đơn giản với khả năng tải lên, tôi luôn sử dụng DB = Siêu dữ liệu; File chính nó = hệ thống tập tin, như tôi có một mô-đun tôi thực hiện cho mọi ứng dụng như thế này và nó là một cách tiếp cận dễ dàng để duy trì. Nó có thể mang lại các vấn đề bảo mật, đặc biệt với máy chủ truy cập nhiều người dùng/ứng dụng, nơi bảo mật "truy cập thư mục" nên được duy trì ở cấp thư mục gốc với quyền được xác định nghiêm ngặt (không phải chmod 777 mọi người :-)). đã có một vấn đề duy nhất với cách tiếp cận này. Truy cập bên ngoài được liên kết bởi guid bên ngoài cho tập tin cụ thể.

Đối với môi trường nhiều người thuê, cơ sở dữ liệu tệp của tôi (hoặc tôi gọi là cơ sở dữ liệu phương tiện) cũng chứa url CDN, nghĩa là địa chỉ máy chủ lưu trữ tệp và tệp được HttpHandler phục vụ. Một lần nữa, tôi có thể tưởng tượng cách an toàn và linh hoạt hơn, nhưng điều này chưa bao giờ làm tôi thất vọng, và tôi nhận thức được những vấn đề mà nó tuân theo giải pháp này và tôi ổn với điều đó.

Nhưng vì đây là một chủ đề thú vị đối với tôi, tôi rất muốn nghe nếu ai đó đề xuất một giải pháp khác nhau, khi nói đến filestorage.

8

Vâng, tôi muốn tư vấn cho những điều sau, Gitzerai đã suy nghĩ rất nhiều.

Gitzerai có thể bạn sẽ tìm thấy ở đây thứ mà bạn bỏ lỡ khi tạo giải pháp cho ứng dụng của mình.

Dù sao,

bạn có thể tải lên tệp trên hệ thống tệp nhưng có một số điều bạn cần xem ra.

  • Hãy chắc chắn rằng tài khoản chạy các hồ bơi ứng dụng IIS chỉ có quyền đọc-ghi vào thư mục đó và không thực hiện dưới bất kỳ hoàn cảnh

  • mở rộng Kiểm tra tập tin và không cho phép và thực thi (.exe, .dll và nhiều hơn)

  • Lưu trữ các tệp w/o mở rộng hoặc với một số tiện ích mở rộng .zzz chỉ trong trường hợp. Khi người dùng cần tải xuống tệp, bạn có thể tự động đặt thành tiện ích mở rộng ban đầu

  • Chỉ sử dụng một thư mục để lưu trữ tất cả các tệp được tạo theo cách thủ công.Tránh tạo nhiều thư mục tự động nếu không thực sự cần thiết

  • Tạo một ứng dụng riêng biệt mà thỉnh thoảng sẽ làm một kiểm tra tính toàn vẹn cho các bản ghi trong cơ sở dữ liệu vs tập tin trong hệ thống tập tin

+0

nhờ :) thứ tốt – user2713516

Các vấn đề liên quan