0
我正嘗試從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過程完成。
如何在不等待上傳剩餘圖像的情況下將數據返回到客戶端。
它不會影響總時間。我正在瀏覽器控制檯中檢查它。此前它需要大約800毫秒,仍然是在同一時間。這等於總時間上傳圖片而不使用'Task' –
您是否嘗試過調試?返回Json將在Debug.WriteLine(「完成」)之前被調用; –
是的。你是對的。在'Debug.Writeline'之前調用'return'語句。但不知道爲什麼它採取同一時間。 –