【发布时间】:2023-02-09 02:42:26
【问题描述】:
我在 form 中有一个 button 来下载图像。
如果表单调用 FileResult 函数,图像将完美下载。
如果表单调用 void 函数,图像会下载,但出现此错误:
照片无法打开此文件,因为当前不支持该格式,或者文件已损坏
如果我调用这个函数,即调用下载图像的函数,就会出现我向您展示的错误。
public void DescargarImagen(string imagenSelec, string labelOculto) { try { Logger.Debug("IMAGEN SELECCIONADA ---> " + imagenSelec); Logger.Debug("LABEL OCULTO ---> " + labelOculto); switch (labelOculto) { case "imgIndividual": Logger.Debug("ENTRA EN IMAGEN INDIVIDUAL"); DescargarImagenIndividual(imagenSelec); break; case "FrenteDni": Logger.Debug("ENTRA EN FRENTE DNI"); DescargarImagenFrenteDni(imagenSelec); break; case "DorsoDni": Logger.Debug("ENTRA EN DORSO"); DescargarImagenDorsoDni(imagenSelec); break; } } catch (Exception ex) { Logger.Error(ex.Message + " || Funcion: DescargarImagen()"); ViewData["ERROR"] = ex.Message; throw new Exception(ex.Message); } }这是下载图片的功能
public FileResult DescargarImagenIndividual(string imagenSelec) { string consulta, ruta = ""; string[] splitImg; Logger.Debug("-----------------------------------------------------------------------"); Logger.Debug("IMAGEN SELECCIONADA LLEGADA DESCARGAR IMAGEN INDIVIDUAL: " + imagenSelec); try { splitImg = imagenSelec.Split("/"); using MySqlConnection connection = new MySqlConnection(GlobalVariables.connectionSQL); connection.Open(); // /temporal/[img] consulta = "SELECT Path FROM Entrega WHERE Path LIKE '%" + splitImg[2] + "%'"; Logger.Debug("CONSULTA IMAGEN INDIVIDUAL: " + consulta); using MySqlCommand cmd = new MySqlCommand(consulta, connection); cmd.CommandType = CommandType.Text; using MySqlDataReader reader = cmd.ExecuteReader(); while (reader.Read()) { ruta = "wwwroot/" + reader["Path"].ToString(); } string contentType = "image/png"; byte[] bites = System.IO.File.ReadAllBytes(ruta); Response.Headers.Add("Content-Disposition", $"attachment; filename=\"Imagen Entrega.jpg\""); Logger.Debug("Descarga imagen individual || DescargarImagenIndividual()"); return File(bites, contentType); } catch (Exception ex) { Logger.Error(ex.Message + " || Funcion: DescargarImagenIndividual()"); ViewData["ERROR"] = ex.Message; throw new Exception(ex.Message); } }
【问题讨论】:
标签: c#