Ami*_*eza 22 c# asp.net-web-api
如何通过ASP.NET Web API上传图像文件?
我在文件模式下有一个输入标签,它发布到API,我如何将其保存到服务器文件夹?
我试过这段代码,但它不起作用:
private void UploadWholeFile(HttpRequestBase request)
{
for (int i = 0; i < request.Files.Count; i++)
{
var file = request.Files[i];
var ext = new FileInfo(file.FileName).Extension;
var fullPath = Path.Combine(StorageRoot, Path.GetFileName(Guid.NewGuid() + ext));
file.SaveAs(fullPath);
}
}
Run Code Online (Sandbox Code Playgroud)
Deb*_*ash 23
这里我描述了在web api上传图像的整个过程
[Route("user/PostUserImage")]
public async Task<HttpResponseMessage> PostUserImage()
{
Dictionary<string, object> dict = new Dictionary<string, object>();
try
{
var httpRequest = HttpContext.Current.Request;
foreach (string file in httpRequest.Files)
{
HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.Created);
var postedFile = httpRequest.Files[file];
if (postedFile != null && postedFile.ContentLength > 0)
{
int MaxContentLength = 1024 * 1024 * 1; //Size = 1 MB
IList<string> AllowedFileExtensions = new List<string> { ".jpg", ".gif", ".png" };
var ext = postedFile.FileName.Substring(postedFile.FileName.LastIndexOf('.'));
var extension = ext.ToLower();
if (!AllowedFileExtensions.Contains(extension))
{
var message = string.Format("Please Upload image of type .jpg,.gif,.png.");
dict.Add("error", message);
return Request.CreateResponse(HttpStatusCode.BadRequest, dict);
}
else if (postedFile.ContentLength > MaxContentLength)
{
var message = string.Format("Please Upload a file upto 1 mb.");
dict.Add("error", message);
return Request.CreateResponse(HttpStatusCode.BadRequest, dict);
}
else
{
YourModelProperty.imageurl = userInfo.email_id + extension;
// where you want to attach your imageurl
//if needed write the code to update the table
var filePath = HttpContext.Current.Server.MapPath("~/Userimage/" + userInfo.email_id + extension);
//Userimage myfolder name where i want to save my image
postedFile.SaveAs(filePath);
}
}
var message1 = string.Format("Image Updated Successfully.");
return Request.CreateErrorResponse(HttpStatusCode.Created, message1); ;
}
var res = string.Format("Please Upload a image.");
dict.Add("error", res);
return Request.CreateResponse(HttpStatusCode.NotFound, dict);
}
catch (Exception ex)
{
var res = string.Format("some Message");
dict.Add("error", res);
return Request.CreateResponse(HttpStatusCode.NotFound, dict);
}
}
Run Code Online (Sandbox Code Playgroud)
在WEB API帖子上设置此代码(取自http://www.c-sharpcorner.com/uploadfile/fc9f65/uploading-a-file-with-web-api-and-entity-framework-using-aja/)控制器:
// POST: api/FileUploads
[ResponseType(typeof(FileUpload))]
public IHttpActionResult PostFileUpload()
{
if (HttpContext.Current.Request.Files.AllKeys.Any())
{
// Get the uploaded image from the Files collection
var httpPostedFile = HttpContext.Current.Request.Files["UploadedImage"];
if (httpPostedFile != null)
{
FileUpload imgupload = new FileUpload();
int length = httpPostedFile.ContentLength;
imgupload.imagedata = new byte[length]; //get imagedata
httpPostedFile.InputStream.Read(imgupload.imagedata, 0, length);
imgupload.imagename = Path.GetFileName(httpPostedFile.FileName);
db.FileUploads.Add(imgupload);
db.SaveChanges();
// Make sure you provide Write permissions to destination folder
string sPath = @"C:\Users\xxxx\Documents\UploadedFiles";
var fileSavePath = Path.Combine(sPath, httpPostedFile.FileName);
// Save the uploaded file to "UploadedFiles" folder
httpPostedFile.SaveAs(fileSavePath);
return Ok("Image Uploaded");
}
}
return Ok("Image is not Uploaded");
}
Run Code Online (Sandbox Code Playgroud)
在您的UWP应用程序上,设置以下方法:
using System;
using System.Threading.Tasks;
using Windows.Storage;
using Windows.Storage.Streams;
using Windows.Web.Http;
// ...
public static bool UploadImageToServer(StorageFile imageFile)
{
bool saveRes = false;
try
{
using (HttpClient client = new HttpClient())
{
if (client != null) // if no Network Connection
{
HttpResponseMessage response = new HttpResponseMessage();
Task task = Task.Run(async () =>
{
using (HttpMultipartFormDataContent formData = new HttpMultipartFormDataContent())
{
IBuffer buffer = await FileIO.ReadBufferAsync(imageFile);
HttpBufferContent WebHTTPContent = new HttpBufferContent(buffer);
formData.Add(WebHTTPContent, "UploadedImage", imageFile.Name);
response = await client.PostAsync(App.VehicleImageUri, formData);
if (response.IsSuccessStatusCode) saveRes = true;
}
});
task.Wait();
}
}
}
catch (Exception em)
{
// Handle exception here ...
}
return saveRes;
}
Run Code Online (Sandbox Code Playgroud)
您可以按如下方式调用方法:
private async void CaptureImageByUser()
{
StorageFile file;
// Create storage file in local app storage
string fileName = GenerateNewFileName() + ".jpg";
CreationCollisionOption collisionOption = CreationCollisionOption.GenerateUniqueName;
file = await ApplicationData.Current.TemporaryFolder.CreateFileAsync(fileName, collisionOption);
// Captures and stores new Jpeg image file
await mediaCapture.CapturePhotoToStorageFileAsync(ImageEncodingProperties.CreateJpeg(), file);
// Delete the file in the temporary location if successfully uploaded
if (SaveDataByUser.UploadImageToServer(file)) await file.DeleteAsync();
}
private string GenerateNewFileName(string prefix = "IMG")
{
return prefix + "_" + DateTime.UtcNow.ToString("yyyy-MMM-dd_HH-mm-ss");
}
Run Code Online (Sandbox Code Playgroud)
嘿,让我知道它是否适合你!乐于帮助!:)
归档时间: |
|
查看次数: |
69025 次 |
最近记录: |