我试图从ajax请求上传图片。在行动中,我必须为该图像保存4种不同的尺寸。
我想在当前线程中仅保存一个,并在另一个线程中保留3个图像图像,这样用户就不必等待上传所有图像,因为我只需要第一个图像的路径。
这是我到目前为止所做的。
[HttpPost]
public JsonResult UploadImage(bool isUploadLogo = false)
{
HttpPostedFileBase file = Request.Files["UploadedImage"];
if (file != null)
{
var getExt = Path.GetExtension(file.FileName).ToLower();
var getBytesArray = ResizeImage.ConvertToByte(file);
string fileName = "TestImage" + DateTime.Now.Ticks.ToString() + getExt;
var smallSizeImageBytes = ResizeImage.ResizeImageBytes(200, 200, getBytesArray, getImageFormat);
var pic = ImageStore.UploadImage(fileName, file.ContentType, smallSizeImageBytes);
//Save Slider Image, Without Wait
if (!isUploadLogo)
{
new Thread(() =>
{
UploadSliderImage(getBytesArray);
}).Start();
}
var result = new
{
url = "Folder Path Here" + fileName,
isSuccess = "true"
};
return Json(result, "text/plain", JsonRequestBehavior.AllowGet);
}
}
public void UploadSliderImage(byte[] CroppedImage)
{
//Code for upload diffrent size images
}
虽然我在另一个帖子中调用 UploadSliderImage 但是在客户端我没有得到结果,直到 UploadSliderImage 处理完成。
如何在不等待上传剩余图像的情况下将数据返回给客户端。
答案 0 :(得分:0)
我认为假设您使用.net 4.0及更高版本,最好使用Task而不是Thread类。以下是您可以基于的示例代码。它将立即返回Json而不完成任务。
Debug.WriteLine("Image Upload");
Task tsk = new Task(() =>
{
Thread.Sleep(5000); //This is your UploadSlider Image
Debug.WriteLine("Done");
});
tsk.Start();
return Json("result", JsonRequestBehavior.AllowGet);