JDK-8197790 : FileReader does not work
  • Type: Bug
  • Component: javafx
  • Sub-Component: web
  • Affected Version: 8,9,10
  • Priority: P3
  • Status: Closed
  • Resolution: Duplicate
  • OS: generic
  • CPU: generic
  • Submitted: 2018-02-12
  • Updated: 2019-01-17
  • Resolved: 2019-01-17
Related Reports
Duplicate :  
Relates :  
Description
FULL PRODUCT VERSION :
java version "1.8.0_172-ea"
Java(TM) SE Runtime Environment (build 1.8.0_172-ea-b03)
Java HotSpot(TM) 64-Bit Server VM (build 25.172-b03, mixed mode)

ADDITIONAL OS VERSION INFORMATION :
Windows 7 and 10

A DESCRIPTION OF THE PROBLEM :
I have reported the bug JDK-8194265. So you provide the the early build 172, i test it. And I am really disappointed. Yes, the crash is fixed, but we don't see the file content.

STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
See also html5rocks/tutorials/file/dndfiles
See Example: Slicing a file. 

or 

http://papaparse.com/demo

EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
The callback reader.result should return the file result in callbackhandler reader.onload.
ACTUAL -
Error.  I don't see any alert message in one of the callback handlers.
Currently we don't see the result of reading the file.

REPRODUCIBILITY :
This bug can be reproduced always.

---------- BEGIN SOURCE ----------
<!DOCTYPE html>
<html>
<body>

<p id="demo"></p>



<style>
  #progress_bar {
    margin: 10px 0;
    padding: 3px;
    border: 1px solid #000;
    font-size: 14px;
    clear: both;
    opacity: 0;
    -moz-transition: opacity 1s linear;
    -o-transition: opacity 1s linear;
    -webkit-transition: opacity 1s linear;
  }
  #progress_bar.loading {
    opacity: 1.0;
  }
  #progress_bar .percent {
    background-color: #99ccff;
    height: auto;
    width: 0;
  }
</style>


<input type="file" id="files" name="file" />
<button onclick="abortRead();">Cancel read</button>
<div id="progress_bar"><div class="percent">0%</div></div>

<script>
var w = window.innerWidth
|| document.documentElement.clientWidth
|| document.body.clientWidth;

var h = window.innerHeight
|| document.documentElement.clientHeight
|| document.body.clientHeight;


  var reader;
  var progress = document.querySelector('.percent');

  function abortRead() {
    reader.abort();
  }

  function errorHandler(evt) {
    alert('error')
  }

  function updateProgress(evt) {
    alert('updareprof')
  }
 
 function onInitFs(fs) {
  console.log('Opened file system: ' + fs.name);
}


  function handleFileSelect(evt) {
  try {
    var files = evt.target.files;
    var f = files[0];
	alert(f.size);
    // Reset progress indicator on new file selection.
    progress.style.width = '0%';
    progress.textContent = '0%';
	alert(Object.getOwnPropertyNames(FileReader))
	console.log(Object.getOwnPropertyNames(Math));
    console.log('File Selected');
	alert(window.FileReader);
	alert('creating reader')
    reader = new window.FileReader();
	alert(Object.getOwnPropertyNames(reader))
    reader.onerror = errorHandler;

    reader.onprogress = updateProgress;

    reader.onabort = function(e) {
      alert('File read cancelled');
    };

    reader.onloadstart = function(e) {
    console.log('onloadstart');
    };

    reader.onload = function(e) {
     alert('loading');
	 alert(reader.result);
    }
	 reader.onloadend = function(e) {
      alert('end');
	  alert(reader.result);
    }
	
	
    // Read in the image file as a binary string.
	alert('before ');
	console.log('a1');
	alert(f.name);
	console.log('before readyState');
	alert(reader.readyState);
	alert("Vor Read text");
    reader.readAsText(f);
	alert("Nach Read text");

	} catch(err) {
	alert(err.message);
	}
  }


console.log('After Load');

if (window.File && window.FileReader && window.FileList && window.Blob) {
  alert('The File APIs is supported');
} else {
  alert('The File APIs are not fully supported in this browser.');
}
console.log('After check');
if(window.requestFileSystem) {
alert('can request fs')
}
if(window.webkitRequestFileSystem) {
alert('can request webkit fs')
}
window.onerror = function(e) {
     alert('window error');
 }
alert('before requesting')
window.requestFileSystem  = window.requestFileSystem || window.webkitRequestFileSystem;
console.log('request FS');
<!--
//var fs = window.requestFileSystem(window.TEMPORARY, 5*1024*1024 /*5MB*/, onInitFs, errorHandler);
//alert (fs.name);
//alert (fs.root);
-->
//window.webkitStorageInfo.requestQuota(PERSISTENT, 1024*1024, function(grantedBytes) {
// console.log('request persistnet')
//  window.requestFileSystem(PERSISTENT, grantedBytes, onInitFs, errorHandler);
//}, function(e) {
//  console.log('Error', e);
//});
	
var x = document.getElementById("demo");
x.innerHTML = "Browser inner window width: " + w + ", height: " + h + ".";
document.getElementById('files').addEventListener('change', handleFileSelect, false);
</script>

</body>
</html>

---------- END SOURCE ----------

CUSTOMER SUBMITTED WORKAROUND :
there is no workaround.

SUPPORT :
YES


Comments
Can probably be closed as a duplicate of JDK-8207772
16-01-2019

I confirm that JDK-8194265 does not give crash but neither shows file content after reading file. JDK-8194265 has been backported to 8u172-b02 but issue is still reproducible. 8u172-b03 : Fail 10-ea+41 : Fail
13-02-2018