我試圖在我的WPF應用程序中實現功能,將圖像從瀏覽器拖出到我的WPF應用程序的窗口中。將圖像從瀏覽器拖放到WPF應用程序
該代碼適用於Firefox和Windows資源管理器,但Chrome和IE出現問題(尚未嘗試任何其他瀏覽器)。
這裏有一個代碼片段:
private void Drag_Enter(object sender, DragEventArgs e)
{
foreach (string format in e.Data.GetFormats())
Console.WriteLine(format);
Console.WriteLine("Effects:" + e.AllowedEffects);
}
private void Drag_Drop(object sender, DragEventArgs e)
{
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
ImageSourceConverter converter = new ImageSourceConverter();
foreach (string file in files)
{
if (converter.IsValid(file))
{
// Do something with the image
}
}
}
望着輸出,似乎火狐圖像實際上保存到剪貼板,而Chrome瀏覽器就可以抓取圖片的HTML,而IE不會做任何事情。
任何人都對我如何獲得跨瀏覽器功能有一些瞭解?
更新: 我發現一對夫婦的解決方法是解析HTML(瀏覽器/火狐)的圖像源,然後使用類似WebClient的對象的來源下載。 然而,偏好一種方法對文件類型有更強的檢查。
IE9和Firefox都具有DeviceIndependentBitmap文件格式,該格式在拖動非超鏈接圖像時可用。這似乎是一個更安全的選擇,儘管Chrome似乎不支持它。它對超鏈接圖像也沒有那麼有用。
與Firefox,輸出(DRAG_ENTER由於某種原因被炒魷魚了兩次):再次
DragContext
DragImageBits
FileGroupDescriptorW
FileContents
HTML Format
text/html
text/x-moz-url
UniformResourceLocatorW
UniformResourceLocator
Text
UnicodeText
System.String
Effects: Copy, Move, Link
的Internet Explorer(:
text/x-moz-url
FileGroupDescriptor
FileGroupDescriptorW
FileContents
UniformResourceLocator
UniformResourceLocatorW
text/x-moz-url-data
text/x-moz-url-desc
text/uri-list
text/_moz_htmlcontext
text/_moz_htmlinfo
text/html
HTML Format
Text
UnicodeText
System.String
application/x-moz-nativeimage
DeviceIndependentBitmap
FileDrop
FileNameW
FileName
Preferred DropEffect
application/x-moz-file-promise-url
application/x-moz-file-promise-dest-filename
DragImageBits
DragContext
Effects: Link, All
鉻(DRAG_ENTER也被炒魷魚的兩倍) ,drag_enter發射兩次):
UntrustedDragDrop
msSourceUrl
FileGroupDescriptor
FileGroupDescriptorW
FileContents
UniformResourceLocator
Effects: Link