Итак, я пишу службу для загрузки файлов из приложения iPhone через телефонную защелку. Они отправляют мне файл, и я пытаюсь захватить фактический файл, не сохраняя его в любой тип файловой системы. В настоящее время это то, что яasp.net web api загрузка файла без сохранения
[HttpPost]
public string processRequest()
{
string ext = "Entered";
Request.Content.ReadAsMultipartAsync<MultipartMemoryStreamProvider>(new MultipartMemoryStreamProvider()).ContinueWith((tsk) =>
{
ext = "Request";
MultipartMemoryStreamProvider prvdr = tsk.Result;
foreach (HttpContent ctnt in prvdr.Contents)
{
ext = "Foreach";
// You would get hold of the inner memory stream here
Stream stream = ctnt.ReadAsStreamAsync().Result;
if (stream == null)
{
ext = "Null Stream";
}
Image img = Image.FromStream(stream);
if (ImageFormat.Jpeg.Equals(img.RawFormat))
{
ext = "jpeg";
}
else if (ImageFormat.Png.Equals(img.RawFormat))
{
ext = "Png";
}
else if (ImageFormat.Gif.Equals(img.RawFormat))
{
ext = "Gif";
}
// do something witht his stream now
}
});
return ext;
}
Я клал различные ответы там, чтобы я мог видеть, где функция получает в. Прямо сейчас он всегда возвращает «Введено», что означает, что он даже не читает содержание запроса, конечная игра для меня, чтобы захватить файл-объект, преобразовать его в изображение, а затем в базу 64. Любое направление будет оценено. Помните, что я хочу сделать это без какой-либо файловой системы, поэтому нет решений, связанных с отображением пути к папке сервера.
Итак, немного обновляю, я редактировал свой код в соответствии с моим первым ответом и, по крайней мере, пытается выполнить его сейчас, но он просто бесконечно застревает внутри кода. Это происходит во время функции ReadAsMultipartAsync
[HttpPost]
public string processRequest()
{
string ext = "Entered";
Request.Content.ReadAsMultipartAsync(new MultipartMemoryStreamProvider()).ContinueWith((tsk) =>
{
ext = "Request";
MultipartMemoryStreamProvider prvdr = tsk.Result;
foreach (HttpContent ctnt in prvdr.Contents)
{
ext = "Foreach";
// You would get hold of the inner memory stream here
Stream stream = ctnt.ReadAsStreamAsync().Result;
if (stream == null)
{
ext = "Null Stream";
}
Image img = Image.FromStream(stream);
if (ImageFormat.Jpeg.Equals(img.RawFormat))
{
ext = "jpeg";
}
else if (ImageFormat.Png.Equals(img.RawFormat))
{
ext = "Png";
}
else if (ImageFormat.Gif.Equals(img.RawFormat))
{
ext = "Gif";
}
// do something witht his stream now
}
}).Wait();
return ext;
}