我很陌生JavascriptFFI
,非常感谢这里的帮助。
我有一个有效的javascript代码来FILE URI
从相机中获取图像(通过cordova相机插件)。现在,它可以在成功时返回错误或文件 uri。我们想将它们映射到Left Int Text
and Right GHCJS.DOM.Types.File
(不确定我是否得到了FILE URI
正确的类型)。
这是 javascript 代码(未经测试,因为我将其从测试代码中修改为仅返回 fileuri 或错误,而不是在浏览器中显示它)。
<script type="text/javascript" charset="utf-8">
var destinationType; // sets the format of returned value
// Wait for device API libraries to load
document.addEventListener("deviceready",onDeviceReady,false);
// device APIs are available
function onDeviceReady() {
pictureSource=navigator.camera.PictureSourceType;
destinationType=navigator.camera.DestinationType;
}
// Called when a photo is successfully retrieved
//
function onPhotoURISuccess(imageURI) {
console.log("success");
return imageURI;
}
// A button will call this function for testing
function capturePhotoEdit() {
// Take picture using device camera, allow edit, and retrieve image as binary data
navigator.camera.getPicture(onPhotoURISuccess, onFail, { quality: 20, allowEdit: true,
destinationType: destinationType.FILE_URI });
}
// Called if something bad happens.
//
function onFail(message) {
console.log("failure");
return[1, message];
}
</script>
我将欣赏有关如何navigator.camera.getPicture
使用 ghcjs-dom-0.2.3.1(我将其与 Reflex 一起使用)进行 FFI 的指示,以使返回的结果在 Either 中。
然后我可以将其包装起来File URI
(ByteString
我认为首先通过 Cordova 文件 api 将其转换为arraybuffer
)并将其发送到删除服务器以进行持久性。