我正在运行一个 C# 应用程序。这个 C# 应用程序嵌入了一个 Chromium(build 18)浏览器,它指向一个在 http 上运行的远程站点。这是一个 Backbone/Require 站点,所以它是 99% 的 JavaScript。
除了 FileReader 之外,此站点上的所有内容都与 Chrome 内部的工作方式完全相同。无论我们尝试上传什么,我们都会到达 NOT_READABLE_ERR。
我知道总是会触发 NOT_READABLE_ERR 的 build 14 错误。这已在版本 18 中得到纠正(据称?)。
我也尝试启用 --file-allow-file-access 标志。那没有帮助。
相关JS代码如下。抱歉,我无权访问 C# 代码,但如果有任何我可能陷入的陷阱,我可以在那里提出更改建议。我怀疑 C# 没问题,因为http://www.google.com/imghp在我们的嵌入式 Chromium 浏览器中运行良好。
一些注意事项: 文件未锁定。我们尝试了多种文件和文件类型。C# 应用程序在本地运行(Windows 客户端)并嵌入了指向 http 站点的 Chromium 浏览器。
// called from <input type='file'> change event
fileSelected: function(e) {
this._processFile(e.target.files[0]);
},
_processFile: function(filehandle) {
var reader = new FileReader();
reader.onload = function(evt) {
console.log('done loading', evt);
};
reader.onprogress = function(evt) {
console.log("on progress!");
if(evt.lengthComputable) {
console.log("loaded: " + evt.loaded);
console.log("total: " + evt.total);
}
};
reader.onloadstart = function(evt) {
console.log("on load start!");
};
reader.onerror = function(evt) {
switch(evt.target.error.code) {
case evt.target.error.NOT_FOUND_ERR:
console.log('File Not Found!');
break;
case evt.target.error.NOT_READABLE_ERR: // we always arrive here, no matter what type of file. img, pdf, etc. files are not locked.
console.log('File is not readable');
break;
case evt.target.error.ABORT_ERR:
break; // noop
default:
console.log('An error occurred reading this file.');
};
};
reader.onabort = function() {
console.log("upload aborted.");
};
reader.readAsDataURL(filehandle);
}