Anwendung Ich mache den Benutzer Fähigkeit, Bild auf es ziehen und kopieren Sie dieses Bild dann in mehrere Ordner auf einmal. Alles funktioniert gut, wenn ich lokale Datei verwende, aber ich kann es nicht mit Bildern arbeiten, die vom Internetbrowser direkt auf dem Formular gezogen werden.Drag & Drop aus dem Internet-Browser (winforms)
Sicher, Bild wird in richtigen Ordnern gespeichert, aber der Name wird in Kauderwelsch mit der Endung .bmp geändert.
Zum Beispiel, wenn ich 100kb Bild mit dem Namen "image.jpg" aus dem Browser ziehen, bekomme ich 3MB Bild mit dem Namen "sInFeER.bmp". Ich teste es auf Firefox. Ich weiß, dass ich tatsächlich Bild vom temp-Faltblatt des Browsers kopiere, wenn ich das tue und Dateiname wird dort bereits geändert.
Wie kann ich in dieser Situation den korrekten Dateinamen und die korrekte Dateinamenerweiterung beibehalten? (Und vorzugsweise erhalten Bild zu großen BMP-Datei nicht konvertiert ...)
-Code Ich verwende für die Prüfung:
private void button10_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop, false) == true)
{
e.Effect = DragDropEffects.All;
}
}
private void button10_DragDrop(object sender, DragEventArgs e)
{
string[] draggedFiles = (string[])e.Data.GetData(DataFormats.FileDrop, false);
CatchFile(0, draggedFiles);
}
private void CatchFile(int id, string[] draggedFiles)
{
string directory = @”C:\test\”;
foreach (string file in draggedFiles)
{
Directory.CreateDirectory(directory);
File.Copy(file, directory + Path.GetFileName(file));
MessageBox.Show(Path.GetFileName(file)); // test
}
}
die App, von wo Sie das Bild ziehen, hat den Dateinamen geändert, so dass Ihre Winform App erhalten den ursprünglichen Dateinamen nicht mehr erhalten. – Roland
Ja, es sieht so aus ... Aber wenn ich dasselbe Bild vom Browser auf den Desktop ziehe, ist der Dateiname und die Erweiterung identisch mit dem Original (aber ich denke, der Browser lädt hier). Vielleicht sollte ich WebClient.DownloadFile dann verwenden? So, jetzt ist die Frage, wie kann ich die URL-Adresse des gezogenen Bildes bekommen? – Legalt
Ein Browser macht im Allgemeinen gezogene Objekte in mehreren Formaten verfügbar. Du warst glücklich mit DataFormats.FileDrop, also hast du das bekommen. Wenn Sie das Bild in Ihrem eigenen Bildformat speichern möchten, müssen Sie nach einem anderen Format suchen. Suchen Sie nach DataFormats.Bitmap und DataFormats.Dib. Letzteres ist etwas knifflig, Beispielcode [ist hier] (http://stackoverflow.com/a/11274109/17034). –