0
我正在研究asp.net mvc web api。我試圖通過POST請求喜歡上傳圖像,如何在asp.net web api上成功上傳後獲取發佈的文件名
<form action="/api/mypictures/12" method="post" enctype="multipart/form-data">
<label for="somefile">File</label>
<input name="somefile" type="file" />
<input type="submit" value="Submit" />
</form>
我havebeen遵循以下程序,
[HttpPost]
public HttpResponseMessage AddImage(HttpRequestMessage request, int id)
{
try
{
if (!request.Content.IsMimeMultipartContent("form-data"))
{
return request.CreateErrorResponse(HttpStatusCode.UnsupportedMediaType, new HttpError() { { "status", "failed" }, { "message", "Invalid file format" } });
}
else
{
string PATH = HttpContext.Current.Server.MapPath("~/App_Data/");
var streamProvider = new CustomMultipartFormDataStreamProvider(PATH);
var task = Request.Content.ReadAsMultipartAsync(streamProvider).ContinueWith(
t =>
{
if (t.IsFaulted || t.IsCanceled)
throw new HttpResponseException(HttpStatusCode.InternalServerError);
}
);
Photo photo = new Photo();
photo.Id = id;
**photo.Image = "Image that uploaded recently";**
photo.IsUserAllowed = true;
if (barrepository.AddImage(photo) == 1)
{
return request.CreateErrorResponse(HttpStatusCode.OK, new HttpError() { { "status", "success" }, { "message", "file uploaded successfully" } });
}
else
{
return request.CreateErrorResponse(HttpStatusCode.OK, new HttpError() { { "status", "success" }, { "message", "unable to store the image into database" } });
}
}
}
catch(Exception ex)
{
return request.CreateErrorResponse(HttpStatusCode.InternalServerError, new HttpError() { { "status", "failed" }, { "message", ex.Message } });
}
}
和我CustomMultipartFormDataStreamProvider類是喜歡,
public class CustomMultipartFormDataStreamProvider : MultipartFormDataStreamProvider
{
public CustomMultipartFormDataStreamProvider(string path)
: base(path)
{ }
public override string GetLocalFileName(System.Net.Http.Headers.HttpContentHeaders headers)
{
var name = !string.IsNullOrWhiteSpace(headers.ContentDisposition.FileName) ? DateTime.Now.ToString("MM-dd-yyyy-hh-mm-ss")+"_"+headers.ContentDisposition.FileName : "NoName";
return name.Replace("\"", string.Empty);
}
}
和上述步驟很好地將文件保存到提到的文件夾中。但是我需要在上傳成功後將上傳的文件名存儲到我的數據庫表中。我怎麼能成功上傳後獲得張貼文件的文件名。請指導我。
當我做t.FileData,不是從智能感知顯示的FileData ... – guiomie