File Visibility & Permissions
ByteHide Storage allows you to control file visibility through public/private settings. By default, all files are private.
File Visibility
Default Behavior
All files are private by default:
// File is private by default
await storage.Set("config.json", config);
// Explicitly private (not necessary, but available)
await storage.SetPrivate().Set("config.json", config);
Making Files Public
Make specific files or directories public:
// Make a single file public
await storage
.SetPublic()
.Set("public/docs/api.json", apiDocs);
// Make all files in a directory public
var publicDocs = storage
.In("documentation")
.SetPublic();
await publicDocs.Set("guide.md", content);
await publicDocs.FromFile("tutorial.pdf", "local/guide.pdf");
Mixed Visibility
Override directory visibility for specific files:
// Public directory with a private file
var publicStorage = storage
.In("public/documents")
.SetPublic();
// Most files will be public
await publicStorage.Set("public-doc.pdf", publicDoc);
// But this one will be private
await publicStorage
.SetPrivate()
.Set("internal-doc.pdf", internalDoc);
Access Control
Public URLs
Get URLs for public files:
// Get public URL (only works for public files)
var publicUrl = await storage
.In("public/images")
.GetPublicUrl("logo.png");
// Check if file is public
var isPublic = await storage.IsPublic("public/docs/api.json");
Best Practices
Security Considerations
// Secure sensitive directories
var secureStorage = storage
.In("sensitive")
.Encrypt(); // Files are private by default
// Combine with encryption for maximum security
await secureStorage
.EncryptWithQuantum()
.Set("keys.dat", sensitiveData);
Security Note
- Files are private by default - only use
SetPublic()
when necessary - Consider the implications of making entire directories public
- Combine with encryption for sensitive data
- Regularly audit your public files
Permission Management
Visibility Changes
Change file visibility after upload:
// Make existing file public
await storage.MakePublic("docs/public-guide.pdf");
// Make existing file private
await storage.MakePrivate("temp/exposed-file.txt");
Best Practices
- Leverage the default private visibility
- Only make files public when necessary
- Use clear naming conventions for public files/directories
- Document your visibility policies
- Regularly review public files