Commands: UploadAsync
Syntax
#Commands: UploadAsync
UploadAsync is used to insert a new file or update the content of an existing one in a file system.
Task UploadAsync(string filename, Stream source, RavenJObject metadata = null, Etag etag = null);
Parameters | ||
---|---|---|
filename | string | The name of the uploaded file (full path) |
source | Stream | The file content |
metadata | RavenJObject | The file metadata (default: null ) |
etag | Etag | The current file etag used for concurrency checks (null skips check) |
Return Value | |
---|---|
Task | A task that represents the asynchronous upload operation |
Task UploadAsync(string filename, Action<Stream> source, Action prepareStream, long size, RavenJObject metadata = null, Etag etag = null);
Parameters | ||
---|---|---|
filename | string | The name of the uploaded file (full path) |
source | Action<Stream> | The action which writes file content to the network stream |
prepareStream | Action | The action executed before the content is being written (null means no action to perform) |
size | long | The file size. It is sent in RavenFS-Size header to validate the number of bytes received on the server side. If there is a mismatch between the size reported in the header and the number of the bytes read on the server side, then BadRequestException is thrown |
metadata | RavenJObject | The file metadata (default: null ) |
etag | Etag | The current file etag used for concurrency checks (null skips check) |
Return Value | |
---|---|
Task | A task that represents the asynchronous upload operation |
Example I
using (var file = File.OpenRead(@"C:\intro.avi"))
{
await store
.AsyncFilesCommands
.UploadAsync(
"/movies/intro.avi",
file,
new RavenJObject
{
{
"AllowRead", "Everyone"
}
}
);
}
Example II
await store
.AsyncFilesCommands
.UploadAsync(
"two-bytes-file.bin",
s =>
{
s.WriteByte(1);
s.WriteByte(2);
},
null,
2,
new RavenJObject
{
{
"AllowRead", "Everyone"
}
}
);