【问题标题】:Javascript - how to set the size limit of the picture to be uploaded up to 2mb. Script already includedJavascript - 如何设置要上传的图片大小限制为 2mb。已包含脚本
【发布时间】:2017-08-26 22:04:38
【问题描述】:

我的网站上有一个网页,用户可以上传图片。我想设置上传图片的上限为 2mb。目前它上传各种尺寸的图像。如果图片小于 2mb,它将沿着正常路径上传,如果大于 2mb,则弹出窗口应显示错误消息。任何人都可以帮助我如何仅使用 javascript 来做到这一点吗?任何帮助,将不胜感激。谢谢!

按照下面的脚本,帮我设置图片的大小限制,否则有人可以上传 5gb 的图片并让我的服务器过载。

        // Iniciando biblioteca
                                                    var resize = new window.resize();
                                                    resize.init();

                                                    // Declarando variáveis
                                                    var imagens;
                                                    var imagem_atual;

                                                    // Quando carregado a página
                                                    $(function ($) {

                                                        // Quando selecionado as imagens
                                                        $('#imagem').on('change', function () {
                                                            enviar();
                                                        });

                                                    });


                                                    /*
                                                     Envia os arquivos selecionados
                                                     */
                                                    function enviar()
                                                    {
                                                        // Verificando se o navegador tem suporte aos recursos para redimensionamento
                                                        if (!window.File || !window.FileReader || !window.FileList || !window.Blob) {
                                                            alert('O navegador não suporta os recursos utilizados pelo aplicativo');
                                                            return;
                                                        }

                                                        // Alocando imagens selecionadas
                                                        imagens = $('#imagem')[0].files;

                                                        // Se selecionado pelo menos uma imagem
                                                        if (imagens.length > 0)
                                                        {
                                                            // Definindo progresso de carregamento
                                                            $('#progresso').attr('aria-valuenow', 0).css('width', '35%').html('Carregando..');
                                                                // Escondendo campo de imagem
                                                            $('#imagem').hide();

                                                            // Iniciando redimensionamento
                                                            imagem_atual = 0;
                                                            redimensionar();
                                                        }
                                                    }

                                                        /*
                                                         Redimensiona uma imagem e passa para a próxima recursivamente
                                                         */
                                                        function redimensionar()
                                                        {
                                                            // Se redimensionado todas as imagens
                                                            if (imagem_atual > imagens.length)
                                                            {
                                                                // Definindo progresso de finalizado
                                                                $('#progresso').html('Imagem enviada com sucesso');

                                                                // Limpando imagens
                                                                limpar();

                                                                // Exibindo campo de imagem
                                                                $('#imagem').show();

                                                                // Finalizando
                                                                return;
                                                            }

                                                            // Se não for um arquivo válido
                                                            if ((typeof imagens[imagem_atual] !== 'object') || (imagens[imagem_atual] == null))
                                                            {
                                                                // Passa para a próxima imagem
                                                                imagem_atual++;
                                                                redimensionar();
                                                                return;
                                                            }

                                                            // Redimensionando
                                                            resize.photo(imagens[imagem_atual], 800, 'dataURL', function (imagem) {

                                                                // Salvando imagem no servidor
                                                                $.post('ajax/salvar.php', {imagem: imagem}, function() {

                                                                    // Definindo porcentagem
                                                                    var porcentagem = (imagem_atual + 1) / imagens.length * 100;

                                                                    // Atualizando barra de progresso
                                                                    $('#progresso').text(Math.round(porcentagem) + '%').attr('aria-valuenow', porcentagem).css('width', porcentagem + '%');

                                                                    // Aplica delay de 1 segundo
                                                                    // Apenas para evitar sobrecarga de requisições
                                                                    // e ficar visualmente melhor o progresso
                                                                    setTimeout(function () {
                                                                        // Passa para a próxima imagem
                                                                        imagem_atual++;
                                                                        redimensionar();
                                                                    }, 100);

                                                                });

                                                            });
                                                            }

                                                              /*
                                                         Limpa os arquivos selecionados
                                                         */

我需要帮助,因为我不知道如何在上面的代码中解决这个问题。我不是 javascript 编码器。我只是想帮助一个不会说英语的朋友。有人请在允许上传之前编写验证文件大小的代码部分,请

【问题讨论】:

标签: javascript jquery


【解决方案1】:

File objcet 提供了一个属性来显示 File 的大小。您只需要在 Object 实例中使用 file.size 即可。 比如youimage = $('#imagem')[0].files[0];,表示images是File实例。现在您只需阅读image.sie 即可了解您想知道的内容。 当然,您可以使用 PHP 或其他在后台服务器中判断它。 而html表单可以添加名为“MAX_FILE_SIZE”的隐藏项,但是通过javascript很难知道大小。 所以最流行的方法是使用file.size

【讨论】:

  • 我不懂很多javascript。你能把它写在我的代码里吗?请?
  • 因为我不希望脚本在文件超过 3mb 的情况下上传图像,,,请帮我把它写在代码中,好吗?
  • @ALessandro 这很容易。我给你一个函数
  • @Alessandro function getFileSize(file) { if (!!!file) { return; } 返回文件大小; }
  • 谢谢!!我解决了!如果有人需要..让我知道,我会在这里发帖
猜你喜欢
  • 2019-06-09
  • 1970-01-01
  • 2018-01-26
  • 2019-10-15
  • 1970-01-01
  • 2011-05-08
  • 1970-01-01
  • 2022-01-13
  • 1970-01-01
相关资源
最近更新 更多