mickle026 400 Posted June 1, 2020 Share Posted June 1, 2020 I have built a movie report as a list in my c# routine and passing it back to JS as an object Like this, so that the download link appears in my html placeholder <p id="downloadMovieList"></p> ApiClient.MovieReport = function () { ApiClient.getJSON(ApiClient.getUrl('CustomImageServer/MovieReport')).then(response => { console.log(response); var mov = response; var htmlstring = "<a download=\"MovieReport.csv\" href=\"data:application/octet-stream,\"" + encodeURIComponent(mov.MovieText) + "\">Click to Download</a>"; document.getElementById("downloadMovieReport").innerHTML = htmlstring; }).catch(e => { console.log(e); }); } The function works fine except that my data file is 0 bytes Doing it this way: ApiClient.MovieReport = function () { ApiClient.getJSON(ApiClient.getUrl('CustomImageServer/MovieReport')).then(response => { console.log(response); var mov = response; uriContent = "data:application/octet-stream," + encodeURIComponent(mov.MoviesText); newWindow = window.open(uriContent, "MovieReport.txt"); }).catch(e => { console.log(e); }); } Results in all the data, but the window.open doesn't show the filename and saves as a raw octet-stream with a temporary filename and no extension. I much prefer the top method but why is there no data when the response is a full list object. Its got to be a quote or something thats in the wrong place, but its one of them I've been trying for ages and still cannot see it. Pretty confident that it is somewhere here: href=\"data:application/octet-stream,\"" + encodeURIComponent(mov.MovieText) + "\">Click to Download</a>"; even changing it to href=\"data:text/html,\"" + encodeURIComponent(mov.Movies) + "\">Click to Download</a>"; Has no effect on the 0 data length, only the file type it tries to save as. @@chef Link to comment Share on other sites More sharing options...
mickle026 400 Posted June 1, 2020 Author Share Posted June 1, 2020 Sorted it , it was the \" after the octet-stream, making the encoded text become after a quote. changed from href=\"data:application/octet-stream,\"" + encodeURIComponent(mov.MovieText) + "\">Click to Download</a>"; to href=\"data:application/octet-stream," + encodeURIComponent(mov.MovieText) + "\">Click to Download</a>"; Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now