Longue histoire courte: je veux mettre une image dans une colonne d'un DataTable. Pour ce faire, j'ai rassemblé à partir de diverses autres sources que j'ai besoin de convertir l'image en octets, puis affecter les octets à la colonne DataRow souhaitée.Modifier une image en octet, pour le fichier * dans * projet
J'ai donc à peu près exactement ce dont j'ai besoin, SAUF, tous les guides que j'ai trouvés sont pour référencer des fichiers sur le système. L'image que j'ai besoin de convertir est dans le projet.
Voici ce que j'ai, en abrégé:
DataColumn amountcol = new DataColumn();
amountcol.DataType = System.Type.GetType("System.Byte[]");
//...
newrow = dt.NewRow();
newrow[amountcol] = ReadImage("images/dashboard/myvacstatus-am.png", new string[] { ".png" });
private static byte[] ReadImage(string p_postedImageFileName, string[] p_fileType)
{
bool isValidFileType = false;
try
{
FileInfo file = new FileInfo(p_postedImageFileName);
foreach (string strExtensionType in p_fileType)
{
if (strExtensionType == file.Extension)
{
isValidFileType = true;
break;
}
}
if (isValidFileType)
{
FileStream fs = new FileStream(p_postedImageFileName, FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(fs);
byte[] image = br.ReadBytes((int)fs.Length);
br.Close();
fs.Close();
return image;
}
return null;
}
catch (Exception ex)
{
throw ex;
}
}
Le problème: il recherche le fichier sur le système, et non au sein du projet.
je reçois l'erreur suivante:
Impossible de trouver une partie du chemin « C: \ Program Files (x86) \ Common Files \ Microsoft Shared \ devserver \ 10.0 \ images \ dashboard \ myvacstatus-AMPM .png '.
Que voulez-vous dire de dans le projet? Voulez-vous dire que c'est dans le fichier de ressources? –
Je veux dire que, dans mon projet, j'ai un dossier appelé "images", et le fichier se trouve dans ce dossier. Le projet peut se déplacer d'un ordinateur à l'autre, je dois donc pouvoir référencer ce dossier dans le projet. – CptSupermrkt
vous devez obtenir le chemin complet en utilisant Server.MapPath() –