Comment puis-je charger les images du serveur distant dans une table de données C # Windows Formulaire? Je n'ai stocké que le chemin d'image dans ma sqldatabase. Lorsque j'exécute le code, il jette une exception de 404 error. Le même code se retrouve les images sur d'autres formulaires
p>
3 Réponses :
FileStream fs = new FileStream(imagepath, FileMode.Open, FileAccess.Read);
//Initialize a byte array with size of stream
byte[] imgByteArr = new byte[fs.Length];
//Read data from the file stream and put into the byte array
fs.Read(imgByteArr, 0, Convert.ToInt32(fs.Length));
//Close a file stream
fs.Close();
//assign to dt particular column imageByteArr
Hope this will help you
Error system.NotsupportedException: le format de chemin donné n'est pas pris en charge
Pouvez-vous me donner chemin que vous essayez?
Je suppose qu'il s'agit d'une appliçant de foem. Vous pouvez essayer quelque chose comme celui-ci décrit dans Cette question a >: foreach (DataRow row in t.Rows)
{
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(row["uri"].ToString());
myRequest.Method = "GET";
HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(myResponse.GetResponseStream());
myResponse.Close();
row["Img"] = bmp;
}
Pouvez-vous me dire que datagridview est ne pas afficher les images qu'il indiquent uniquement System.Drawing.Bitmap
Hassan Jetez un coup d'oeil sur celui-ci: Stackoverflow.com/questions/16784440/...
@hassan est fonctionne maintenant? Dans Windows Form TataDridView sauf le format bitmap comme source. C'est pourquoi vous devez convertir votre webresponse en système.Drawing.bitmap.
Imports System
Imports System.Runtime.InteropServices
Imports System.Security.Principal Imports System.Security.Permissions Public Class Form1 <DllImport("advapi32.DLL", SetLastError:=True)> _ Public Shared Function LogonUser(ByVal lpszUsername As String, ByVal lpszDomain As String, _
ByVal lpszPassword As String, ByVal dwLogonType As Integer, ByVal dwLogonProvider As Integer, _
ByRef phToken As IntPtr) As Integer End Function Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim admin_token As IntPtr
Dim wid_current As WindowsIdentity = WindowsIdentity.GetCurrent()
Dim wid_admin As WindowsIdentity = Nothing
Dim wic As WindowsImpersonationContext = Nothing
Try
If LogonUser("Local Admin name", "Local computer name", "pwd", 9, 0, admin_token) <> 0 Then
wid_admin = New WindowsIdentity(admin_token)
wic = wid_admin.Impersonate()
// inside this scope you can access remote PC please note that path shouldn't contain : instead of : use $ sign
FileStream fs = new FileStream(imagepath, FileMode.Open, FileAccess.Read);
//Initialize a byte array with size of stream
byte[] imgByteArr = new byte[fs.Length];
//Read data from the file stream and put into the byte array
fs.Read(imgByteArr, 0, Convert.ToInt32(fs.Length));
//Close a file stream
fs.Close();
Else
//custom message
End If
Catch se As System.Exception
Dim ret As Integer = Marshal.GetLastWin32Error()
MessageBox.Show(ret.ToString(), "Error code: " + ret.ToString())
MessageBox.Show(se.Message)
Finally
If wic IsNot Nothing Then
wic.Undo()
End If
End Try
End Sub
End Class
Try this Sir please vote if its working thank you
Le chemin devrait être quelque chose comme \\\ 192.168.1.123 \ d $ \ test \ test.img
amaldec23 Le code fonctionne bien, mais pouvez-vous me dire pourquoi DataGrid View n'indique pas que l'image ne montre que le système, dessin .bitmap
Dans la grille de données View image ne montrera pas en réalité que vous pouvez utiliser la commande Picturebox pour afficher la photo
Le chemin devrait être quelque chose comme: "Images \ A.BMP". (Notez l'absence d'une barre oblique de pointe, et les barres obliques étant réactivées slashes.) Et ensuite: imagebox1.Image = image.fromfile (@ "images \ a.bmp"); Essayez quelque chose comme ceci dans la zone d'image pour charger l'image d'un chemin
If (byteArrayWithImage.length> 0) puis Dim Stream comme nouveau MemorMOstream (B, TRUE) Stream.write (byTeArrayWithImage, 0, byTeArrayWithImage.length) Dim BMP en tant que nouveau bitmap (flux) Picturebox1.Image = BMP End si cela est à charger Array d'image ou d'octet à la boîte d'images
Trop large, vous n'avez pas décrit ce que vous utilisez UI vous utilisez, ou montré toute tentative de recherche.Veuillez lire Comment demander < / a>
@Thegeneral It est une winform
Stackoverflow.com/questions/17193825/...
@Thegeneral plz vérifier
Êtes-vous sûr que votre image accessible?
@nzrytmn Oui Vérifiez ce chemin d'un chemin resturantaapp.com/images/deal2.jpg
Pouvez-vous mettre à jour votre question et donner plus de détails sur votre UI et vos technologies? Les questions doivent créer selon cette ligne de guide Stackoverflow.com/help/how-to-ask .
Vous utilisez WebRequest / Webresponse dans le mauvais sens, le flux sous-jacent de bitmap, aussi. Utilisez la classe WebClient pour télécharger les images (éliminez-la après utilisation). Supprimer ceci:
ServicePointManager.Expect100Continue = true; code>: Vous ne voulez vraiment pas qu'il soit réglé surtrue code>; Si vous le définissez, réglez-le surFALSE code> (toujours). Gardezsystem.net.servicepointpointmanager.securityprotocol = SecurityProtocoltype.tls12; code> Si vous pensez que votre application sera utilisée dans Windows 7 (ce système, s'il n'est pas mis à jour sur le dernier rouleau de sécurité, sera-t-il par défaut à < Code> SSL3 code> etTLS1.0 code>).