IWebApiCreateFileResponse(String, ActionStream, String, String) Method
|
Create http file response with a given file name with an action named as beginWritingStream.
That action is called when an output stream is available, allowing the action to write to it directly.
Thus, allow we can write a largest file (more than 1GB with controlling memory usage).
Namespace: Casewhere.WebTrigger.DSLAssembly: Casewhere.WebTrigger (in Casewhere.WebTrigger.dll) Version: 1.0.0.0 (1.0.0.0)
Syntaxvoid CreateFileResponse(
string fileName,
Action<Stream> beginWritingStream,
string mediaType = "application/octet-stream",
string dispositionHeader = "attachment"
)
Parameters
- fileName String
- beginWritingStream ActionStream
- mediaType String (Optional)
- dispositionHeader String (Optional)
Examplevar dataApi = ctx.Use<IDataApi>();
var webApi = ctx.Use<IWebApi>();
var collectionName = ctx.Parameters.Get<string>("name");
if (string.IsNullOrWhiteSpace(collectionName))
throw new Casewhere.Common.Exceptions.BadDataException("Missing parameter name");
Log.Info("Start downloading {collectionName}", collectionName);
webApi.CreateFileResponse($"{collectionName}_{DateTime.UtcNow.ToString("yyyyMMddHHmmss")}.json",
beginWritingStream: (outputStream) => {
var writer = new StreamWriter(outputStream, encoding: Encoding.UTF8, bufferSize: 4096, leaveOpen: true);
writer.AutoFlush = true;
var filter = FilterBuilder.Create().Build();
var query = DataEnumerationQuery.For(collectionName).FilterBy(filter);
foreach (var employee in dataApi.Enumerate(query))
{
writer.WriteLine(JsonConvert.SerializeObject(employee) + ",");
}
writer.Flush();
outputStream.Close();
});
See Also