2014-03-27 77 views
0

我为win8商店创建了应该能够保存生成数据的javascript/html应用程序。 文本数据保存到我使用一个文件:在Windows 8应用程序商店中支持javascript'msSaveBlob'

 var bb = new MSBlobBuilder(); 
     bb.append(data); 
     var blob = bb.getBlob("text/plain"); 
     window.navigator.msSaveBlob(blob, 'fname.txt'); 

要保存图像使用:

 var canvas = document.createElement('canvas'); 
     canvas.width = img.width; 
     canvas.height = img.height; 
     var ctx = canvas.getContext('2d'); 
     ctx.drawImage(img, 0, 0, canvas.width, canvas.height); 
     window.navigator.msSaveBlob(canvas.msToBlob(), 'fileName.png'); 

在IE11代码做工精良的这些部件。

但是,当我跑了通过Visual Studio中我的代码,我得到了一个错误:0x800a01b6 - JavaScript的运行时错误:对象不支持属性或方法“msSaveBlob”

如何解决这个问题呢?
或者有没有其他的方法可以在win8应用程序中保存数据?

回答

1

我用下面的方法将图像保存在Windows应用商店中的应用程序

 var saveimg= function() { 
     var output; 
     var input; 
     var outputStream; 
     var Imaging = Windows.Graphics.Imaging; 
     var fileval = null; 
     imageFile = null; 
     Windows.Storage.KnownFolders.picturesLibrary.createFileAsync("filename.png", 
       Windows.Storage.CreationCollisionOption.generateUniqueName). 
      then(function (file) { 
       fileval = file; 
       return file.openAsync(Windows.Storage.FileAccessMode.readWrite); 
      }).then(function (stream) {      
       fileStream = stream;     
       var canvas = document.createElement('canvas'); 
       canvas.id  = "canvasid"; 
       canvas.width = img.width; 
       canvas.height = img.height; 
       var ctx = canvas.getContext('2d'); 
       ctx.drawImage(img, 0, 0, canvas.width, canvas.height);         
       return Imaging.BitmapEncoder.createAsync(Imaging.BitmapEncoder.pngEncoderId, stream); 

       // return Windows.Storage.Streams.RandomAccessStream.copyAsync(input, output); 
      }).then(
      function (encoder) { 
       //Set the pixel data--assume "encoding" object has options from elsewhere 
       // encoder.setPixelData(encoding.pixelFormat, encoding.alphaMode, encoding.width, encoding.height, encoding.dpiX, encoding.dpiY, new Uint8Array(imgData.data)); //Go do the encoding 
       var canvas = document.getElementById("canvasid"); 
       var ctx = canvas.getContext("2d");     
       var width = document.getElementById("canvasid").width; 
       var height = document.getElementById("canvasid").height;     
       var outputPixelData = ctx.getImageData(0, 0, width, height); 
       encoder.setPixelData(
        Imaging.BitmapPixelFormat.rgba8, 
        Imaging.BitmapAlphaMode.straight, 
        width, 
        height, 
        96, // Horizontal DPI 
        96, // Vertical DPI 
        outputPixelData.data 
        ); 
       return encoder.flushAsync(); 
      }).done(function() { 

       fileStream.close(); 
      }, function() { 
       //Empty error handler (do nothing if the user canceled the picker) 
      }); 

}

+0

不错!虽然有2个问题:如何保存txt数据以及如何将文件夹从picturesLibrary更改为下载? – 31415926

+0

你应该有公司帐户使用文档库,并且它有许多限制.u可以使用filepickers将数据保存在文档库中。引用此链接http://blogs.msdn.com/b/wsdevsol/archive/2013/05/ 09/deal-with-documents-how-to-use-the-documentslibrary-capability-in-windows-store-apps.aspx – suganthi

+0

保存文本请点击此链接http://msdn.microsoft.com/en-我们/库/窗/应用/ dn531045.aspx – suganthi

相关问题