# Blobstoring Dotnet Filesystem

> Đăng ký Jarvis BlobStoring FileSystem — keyed IBlobStoringService FileSystemService với FileSystemOption RootPath. Dùng khi lưu file trên disk local hoặc volume mount.

- **Type:** Skill
- **Install:** `agentstack add skill-hoangnh2412-ai-skills-filesystem`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [hoangnh2412](https://agentstack.voostack.com/s/hoangnh2412)
- **Installs:** 0
- **Category:** [Agent Skills](https://agentstack.voostack.com/c/agent-skills)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [hoangnh2412](https://github.com/hoangnh2412)
- **Source:** https://github.com/hoangnh2412/ai-skills/tree/main/jarvis/skills/blobstoring-dotnet/providers/filesystem

## Install

```sh
agentstack add skill-hoangnh2412-ai-skills-filesystem
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# FileSystem provider

Path vật lý: `{RootPath}/{SubPath}/{bucket}/{fileName}`.

## appsettings

```json
{
  "FileSystem": {
    "RootPath": "/var/app/storage",
    "SubPath": "uploads",
    "BucketName": "",
    "PartitionBy": 0
  }
}
```

## Registration

```csharp
using Jarvis.BlobStoring;
using Jarvis.BlobStoring.FileSystem;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;

builder.Services.Configure(builder.Configuration.GetSection("FileSystem"));
builder.Services.AddKeyedSingleton("FileSystem");
```

## Inject

```csharp
public sealed class LocalFileService(
    [FromKeyedServices("FileSystem")] IBlobStoringService storage)
{
    public Task UploadAsync(string path, byte[] data, CancellationToken ct = default)
        => storage.UploadAsync(bucket: "documents", fileName: path, data);
}
```

## Lưu ý

- `ViewAsync` trả chuỗi rỗng — không presigned URL; dùng API riêng nếu cần link tải.
- `GetFileNames` hiện trả rỗng trên implementation mặc định — liệt kê file cần mở rộng hoặc dùng MinIO.
- Đảm bảo process có quyền ghi `RootPath` (container: mount volume).

## Validate

- Upload + download cùng `bucket` + `fileName`
- Path traversal: không cho `fileName` chứa `..` ở tầng application

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [hoangnh2412](https://github.com/hoangnh2412)
- **Source:** [hoangnh2412/ai-skills](https://github.com/hoangnh2412/ai-skills)
- **License:** MIT

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-hoangnh2412-ai-skills-filesystem
- Seller: https://agentstack.voostack.com/s/hoangnh2412
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
