小编Eri*_*c.M的帖子

上传blob作为多部分上传导致在500mb之后Chrome上的net :: ERR_FILE_NOT_FOUND

我只在谷歌Chrome和Chromium上遇到了一个非常奇怪的问题.

背景是:

我使用多部分上传方法将文件上传到我的服务器,这意味着我将文件分成10mb的块并将每个块发送到服务器.这在所有具有任何大小的文件的浏览器中都可以完美地工作,当我需要加密每个块时问题就开始了.

对于加密我使用CryptoJS,并且在上传块之前,我加密它并获得结果Blob上传,当我必须上传少于50个块(50个blob,总共约500mb)时,这在Chrome上正常工作,之后我得到a POST http://(...) net::ERR_FILE_NOT_FOUND.

奇怪的是,这适用于所有其他浏览器,包括Opera,现在基本上是Chrome,除了Chrome和Chromium.我在IE,Firefox,Edge,Safari,Opera,Chrome和Chromium上测试过它.

下面你可以看到我的代码如何工作所以你们可以有一个想法,这不是我在应用程序中使用的真实代码,而是,它是我编写的测试代码产生相同的结果.

而不是获取文件的片段(File.slice)我将作为一个块上传并加密它以获得它blob,我将生成一个伪造blob我的块的大小.我用它setTimeout来模拟加密blob所需的时间.就像我之前说的那样,通过这样做,我得到了与我的真实代码相同的结果:

function uploadNext(prevResponse) {  
    if (currentPart == totalPartsFile)
        return;

    //var chunk = getNextChunk();
    var totalSize = file.size;

    setTimeout(function() {
        var blob = new Blob([new ArrayBuffer(constants.chunkSize)], {
            type: 'application/octet-string',
            name: file.name
        });

        console.log(blob);

        blob.encrypted = true;
        blob.key = encryptionKey;
        blob.mimeType = file.mimeType;
        blob.name = file.name;
        blob.originalFileSize = originalFileSize || file.size;

        uploadFile(objectId, currentPart, blob, totalSize, prevResponse, function(resp) {
            uploadNext(resp);
        });
    }, 1000); …
Run Code Online (Sandbox Code Playgroud)

javascript upload google-chrome blob multipartform-data

16
推荐指数
1
解决办法
1760
查看次数

没有Void方法的MVVM中的async/await

我想在我的Windows Phone 8 MVVM项目中使用async/await,我很难找到一种使用这个API实现我的ICommands的好方法.我一直在阅读一些关于这个主题的文章,我在下面的MSDN中提到了这个问题,其中指出我必须避免异步空洞,因为它很难捕获未处理的异常:http: //msdn.microsoft.com/en -us/magazine/jj991977.aspx 在另一个问题我询问过这个问题时,有人还说我不应该使用异步空洞.除非有事件.

但问题是我可以在互联网上找到的所有例子都使用异步空洞.我找到的这两篇文章是例子:http: //richnewman.wordpress.com/2012/12/03/tutorial-asynchronous-programming-async-and-await-for-beginners/http://blog.mycupof.net/2012/08/23/MVVM-asyncdelegatecommand乜asyncawait灿做换uidevelopment /

最后一个是使用async/await的ICommand实现,但它也使用异步空洞.我正在尝试为此提出解决方案,因此我基于RelayCommand编写了ICommand的这个实现:

public delegate Task AsyncAction();

public class RelayCommandAsync : ICommand
{
    private AsyncAction _handler;
    public RelayCommandAsync(AsyncAction handler)
    {
        _handler = handler;
    }

    private bool _isEnabled;
    public bool IsEnabled
    {
        get { return _isEnabled; }
        set
        {
            if (value != _isEnabled)
            {
                _isEnabled = value;
                if (CanExecuteChanged != null)
                {
                    CanExecuteChanged(this, EventArgs.Empty);
                }
            }
        }
    }

    public bool CanExecute(object parameter)
    {
        return IsEnabled;
    }

    public …
Run Code Online (Sandbox Code Playgroud)

c# async-await windows-phone-8

6
推荐指数
1
解决办法
6001
查看次数

使用 puppeteer 截图时页面闪烁

我在 Ubuntu 上使用 puppeteer 和 node 和express。

我基本上有一个端点,当我在浏览器上调用它时,我会返回来自 puppeteer 的屏幕截图。

但奇怪的是,每次我这样做时,chrome 上的页面都会闪烁(我不是无头运行,因为我想看看发生了什么)。

这是发生的事情的视频:

https://youtu.be/FlgROI85y2E

这会导致一些奇怪的问题,在某些网站上,当您单击外部时,菜单或弹出窗口会关闭,当您截取屏幕截图时,该弹出窗口或菜单就会消失。

这是谷歌关于页面的另一个例子,说明了这一点:

https://youtu.be/tXqyCO8oAHg

这是我当前获取屏幕截图的端点的样子:

app.get("/ss/:id/*", async (req, res) => {
  const { id } = req.params;
  const page = await getPage(id);

  const { resolution } = req.cookies;

  let [width, height] = (resolution as string)
    .split("x")
    .map((o) => parseFloat(o));

  width = Math.max(width, 1) - 4; // for netscape;
  height = Math.max(height, 1) - 4; // for nestcape;

  const ss = await page.screenshot({
    quality: 100,
    encoding: "binary",
    type: …
Run Code Online (Sandbox Code Playgroud)

javascript automated-tests node.js puppeteer

6
推荐指数
1
解决办法
356
查看次数

在<Aurelia中使用Enhance调用的globalResource组件内的<require>

所以,我正在尝试在我的Angular 1 Web应用程序中设置Aurelia,以便我可以慢慢升级.我需要这样做,因为应用程序太大并且一次迁移所有内容是不可能的.

所以,在我的Aurelia文件夹中,我创建了一个包含两个组件的组件文件夹(aurelia-component.js以及another-component.js它们的视图aurelia-component.htmlanother-component.html),我不会把它放在javascript中,因为它们只是两个带有一个属性的类,两者的html是相同的,唯一的东西更改是文本属性值,因此我可以区分它们:

<template>
    <div>${text}</div>
</template>
Run Code Online (Sandbox Code Playgroud)

我的切入点main.js如下:

export function configure(aurelia) {
    aurelia.use
        .basicConfiguration()
        .developmentLogging()
        .globalResources('components/aurelia-component')
        .globalResources('components/another-component');

        //window.aurelia = aurelia;
     aurelia.start()
        .then(a => { 
            window.aurelia = a;
        });
}
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,这将Aurelia放在窗口对象中,所以我可以从我的Angular应用程序访问它,我稍后会对此进行改进.在我的角度应用程序中,我有这个指令:

'use strict';

function AureliaContainer() {
    function Link($scope, element, attrs) {
        window.aurelia.enhance(element[0]);
    }
    //
    return {
        restrict: 'A',
        link: Link
    };
}

module.exports = AureliaContainer;
Run Code Online (Sandbox Code Playgroud)

我在我的app root中设置了这个:

app.directive('aureliaContainer', require('./directives/aurelia.container'));
Run Code Online (Sandbox Code Playgroud)

在我的Angular View中,我有这些div与我的指令调用enhanceAurelia中的函数:

<div aurelia-container>
    <aurelia-component></aurelia-component>
</div>
<div aurelia-container>
    <another-component></another-component>
</div> …
Run Code Online (Sandbox Code Playgroud)

javascript aurelia

5
推荐指数
1
解决办法
220
查看次数

在 React-select v2 中旋转箭头指示器

我在我的带有样式组件的项目中使用 React Select v2,我需要能够在菜单打开时将箭头指示器倒置,这在 v1 中受支持。

我有点设法通过这样做来做到这一点:

   css`
     &.react-select__control--is-focused {
       & .react-select__indicators {
         & .react-select__dropdown-indicator {
           transform: rotate(180deg);
         }
       }
     }
   `;
Run Code Online (Sandbox Code Playgroud)

问题是,如果我按下箭头打开菜单并再次单击它关闭它,箭头保持倒置,因为选择仍然是焦点,这在 UIX 方面感觉有点奇怪。

是否有根据菜单状态旋转它的正确方法?我在文档中寻找了一些东西,但找不到。

也许我错过了,如果有人能指出我正确的方向,那就太棒了!

谢谢!

reactjs react-select

4
推荐指数
2
解决办法
7290
查看次数

为什么在C#中生成代码使用下划线?

我知道这可能是一个愚蠢的问题,但在这里.我总是写我的私人成员privateMember,我一直在阅读C#中的命名约定,因为我注意到Visual Studio中的很多自动生成的代码都_variableName用于私有成员.我读到的任何地方,即使是在Microsoft文档中,您都应该使用privateMember.所以,我的问题是,如果好的做法说我应该privateMember像现在一样写,为什么Visual Studio会使用下划线(_privateMember)生成私有成员的类?

c# private members

3
推荐指数
3
解决办法
3037
查看次数

在 Docker 上使用 Traefik 允许 http 和 https

Traefik在我的 VPS 中使用它来将流量路由到我的网站,经过几个小时的摆弄,我终于成功地https使用 Le's Encrypt 让它工作。

现在,我需要做的一件事是也能够通过普通方式访问我的网站,http因为这是旧浏览器的一个爱好项目,我添加的唯一原因tls是 Firefox 不喜欢我的网站没有它。

问题是,使用我当前的配置,我可以https正常访问我的网站,但是当我尝试使用普通方式时,http我收到404错误。

这是我的配置docker-compose

version: "3"
services:
  traefik:
    image: "traefik:v2.5"
    container_name: "traefik"
    command:
      #- "--log.level=DEBUG"
      - "--api.insecure=true"
      - "--providers.docker=true"
      - "--providers.docker.exposedbydefault=false"
      - "--entrypoints.web.address=:80"
      - "--entrypoints.websecure.address=:443"
      - "--certificatesresolvers.teeresolver.acme.tlschallenge=true"
      - "--certificatesresolvers.teeresolver.acme.email=me@gmail.com"
      - "--certificatesresolvers.teeresolver.acme.storage=/letsencrypt/acme.json"
    ports:
      - "443:443"
      - "80:80"
      - "8080:8080"
    volumes:
      - "./letsencrypt:/letsencrypt"
      - "/var/run/docker.sock:/var/run/docker.sock:ro"
    networks:
      - mywebsite
  # [...]
  mywebsite:
    image: my-web-site/site
    build:
      context: ~/mywebsite-runner/_work/my-web-site-php/my-web-site-php
      dockerfile: Dockerfile
    volumes: …
Run Code Online (Sandbox Code Playgroud)

ssl https http docker traefik

2
推荐指数
1
解决办法
4892
查看次数

在 UWP 中的 Frame (SplitView) 中导航回时丢失 DataContext

我正在使用带有导航框架的 SplitView 在 C# 中为 Windows 10 编写通用应用程序。我有一个带有动态加载的列表的侧边栏,当我单击其中一个项目时,我使用菜单中的模型导航到一个页面,以指示我应该在框架中加载哪个项目。

我遵循了这个示例:Windows-universal-samples/Samples/XamlNavigation/

唯一的区别是,我没有多个页面,而是每次选择具有特定 ViewModel 的不同项目时只加载一个页面。我使用 Autofac 加载 ViewModel 并MyFrame.Navigate(typeof(DetailsPage), idOfItem);加载页面。

问题是,每次导航到下一页时,上一页的实例似乎都丢失了,当我返回时,它会加载一个新实例。当我在 RootFrame 中导航时,这种事情似乎不会发生,而在 Windows Phone 8.1 中也没有发生。

我一直在网上寻找解决方案几个小时,但我找不到任何相关的东西。

有谁知道为什么会发生这种情况?我希望我的问题足够清楚。

预先感谢您的回答。

c# mvvm uwp windows-10-universal

1
推荐指数
1
解决办法
1290
查看次数