qt - pro - transferir archivos de xiaomi a pc
Arrastre el archivo de la aplicación al explorador. ¿Mi aplicación puede hacer la copia? (1)
Yo usaría algo como:
Drag.mimeData: { "text/uri-list": "http://localhost:8080/datarepository?id=12345" }
y luego pondré a disposición los datos solicitados en un servidor HTTP en la aplicación (que luego puede extraer fácilmente el objeto que tiene ID igual a 12345
en mi ejemplo de DB) ... (una vez que la operación de copia ha comenzado, no lo hago) piense que es una pena que su usuario espere unos segundos mientras el sistema extrae el objeto del DB).
En Qml, puedo iniciar un arrastre utilizando el tipo mime text/uri-list
para iniciar una acción de copiado desde mi aplicación en un explorador de archivos, por ej.
Item {
id: draggable
anchors.fill: parent
Drag.active: mouseArea.drag.active
Drag.hotSpot.x: 0
Drag.hotSpot.y: 0
Drag.mimeData: { "text/uri-list": "file:///home/myname/Desktop/avatar.jpeg" }
Drag.supportedActions: Qt.CopyAction
Drag.dragType: Drag.Automatic
Drag.onDragStarted: { }
Drag.onDragFinished: {
console.log("Time to copy")
}
} // Item
o
Item {
id: draggable
anchors.fill: parent
Drag.active: mouseArea.drag.active
Drag.hotSpot.x: 0
Drag.hotSpot.y: 0
Drag.mimeData: { "text/uri-list": "https://farm1.staticflickr.com/713/21777111068_e3310cfb94_k.jpg" }
Drag.supportedActions: Qt.CopyAction
Drag.dragType: Drag.Automatic
Drag.onDragStarted: { }
Drag.onDragFinished: {
console.log("Time to copy")
}
} // Item
(ver también Qt Quick Examples - externaldraganddrop )
Esto funciona bien dado file:
y http:
URI.
Sin embargo, mis datos reales no están disponibles como URI, pero están almacenados en una base de datos. No puedo almacenar rápidamente en la temperatura porque eso puede llevar unos segundos y el usuario no quiere un retraso en el momento en que comienza a arrastrar.
¿Es de alguna manera posible obtener el URI objetivo después de la caída y hacer la copia yo mismo? ¿O solo el objetivo puede hacer la copia?
En el caso posterior, ¿necesito hacer que mis datos estén disponibles a través de un servidor HTTP interno? ¿Cómo sé siquiera qué esquema de URI es compatible con los navegadores de archivos en Linux, Windows y OS X?