DOM7000:访问被拒绝。对于跨源URL限制资源访问:' blob:XXXXxxxxx

时间:2014-01-02 11:56:10

标签: javascript dom windows-store-apps winjs

来自MSDN论坛here的原始问题,但由于没人接听,我决定试试SO。

我一直在使用一种方式让用户将图像从本地计算机上传到我的服务器(DB)。但是现在我添加了缩小图像的可能性,所以如果用户选择(通过FileOpenPicker)一个巨大的图像,我会先将它缩小一点,然后再显示{{1元素并将其上传到服务器(根据用户请求)。

执行此操作后,当我想通过img设置img.src属性时,我会在JavaScript控制台中收到主题警告,因为我总是这样做。此外,当我尝试上传文件时,我得到一个"访问被拒绝"错误。

有人可以帮忙吗?这是一个小代码片段。

URL.createObjectURL

这是internalSet函数的代码,实际设置src属性

的代码
var pixelData, newFile;
file.openAsync(Windows.Storage.FileAccessMode.read)
.then(function (origin) {
    return Windows.Graphics.Imaging.BitmapDecoder.createAsync(origin);
}.bind(this)).then(function (bitmapDecoder) {
    var bitmapTransform = new Windows.Graphics.Imaging.BitmapTransform();
    bitmapTransform.scaledHeight = 768;
    bitmapTransform.scaledWidth = 1024;

    return bitmapDecoder.getPixelDataAsync(Windows.Graphics.Imaging.BitmapPixelFormat.rgba8, Windows.Graphics.Imaging.BitmapAlphaMode.straight, bitmapTransform, Windows.Graphics.Imaging.ExifOrientationMode.respectExifOrientation, Windows.Graphics.Imaging.ColorManagementMode.doNotColorManage);
}.bind(this)).then(function (data) {
    pixelData = data;
    var fileName = this.maximumUploadSize + '_' + file.name;
    return Windows.Storage.ApplicationData.current.temporaryFolder.createFileAsync(fileName, Windows.Storage.CreationCollisionOption.replaceExisting);
}.bind(this)).then(function (aux) {
    newFile = aux;
    Windows.Storage.AccessCache.StorageApplicationPermissions.futureAccessList.add(newFile, newFile.name);
    return newFile.openAsync(Windows.Storage.FileAccessMode.readWrite);
}.bind(this)).then(function (destination) {
    return Windows.Graphics.Imaging.BitmapEncoder.createAsync(Windows.Graphics.Imaging.BitmapEncoder.pngEncoderId, destination);
}.bind(this)).then(function (encoder) {
    encoder.setPixelData(Windows.Graphics.Imaging.BitmapPixelFormat.rgba8, Windows.Graphics.Imaging.BitmapAlphaMode.premultiplied, 1024, 768, 96, 96, pixelData.detachPixelData());
    return encoder.flushAsync();
}.bind(this)).then(function () {
    this.internalSet(newFile);
}.bind(this), function (error) {
    Utils.showError(error);
});

提前致谢!

0 个答案:

没有答案