php - 调整图像客户端大小和通过 AJAX 上传仅有时有效

标签 php jquery ajax wordpress

我在允许用户通过表单提交图像文件、在客户端调整其大小、通过 AJAX 和 PHP 将其上传到 Wordpress 网站,然后显示图像的缩略图版本的代码方面存在问题。问题是代码有时只能工作,而且它似乎更喜欢某些文件而不是其他文件。我有一张 jpeg 图片每 10 次尝试只上传一次,而其他 jpeg 图片每 10 次尝试上传 5 次。此外,当图片正在上传并达到 100% 时,有时进度条会回落到大约 85%,然后再次上升到 100%。我认为这是我的问题的原因,但我一直无法弄清楚如何解决它。

jQuery:

$('#myform-fileinput').change(function() { 
    if ($('#myform-fileinput').length) {

        if (window.File && window.FileReader && window.FileList && window.Blob) {

            var filesToUpload = document.getElementById('myform').files;
            var file = filesToUpload[0];

            var img = document.createElement("img");
            var reader = new FileReader();
            reader.onload = function(e)
            {
                img.src = e.target.result;

                var canvas = document.createElement("canvas");
                var ctx = canvas.getContext("2d");
                ctx.drawImage(img, 0, 0);
                // Do other manipulations and send via AJAX here
            reader.readAsDataURL(file);
        }
    }
});

最佳答案

我能够解决这个问题,事实证明这很简单。在代码中,而不是做

reader.onload = function(e)
        {
            img.src = e.target.result;

            var canvas = document.createElement("canvas");
            var ctx = canvas.getContext("2d");
            ctx.drawImage(img, 0, 0);
            // Do other manipulations and send via AJAX here
        }
reader.readAsDataURL(file);

我需要做

reader.onload = function(e)
        {
            image.onload = function () {
               var canvas = document.createElement("canvas");
               var ctx = canvas.getContext("2d");
               ctx.drawImage(img, 0, 0);
               // Do other manipulations and send via AJAX here
            }

            image.src = e.target.result;
        }
reader.readAsDataURL(file);

我只需要在处理图像数据之前给它加载时间。

关于php - 调整图像客户端大小和通过 AJAX 上传仅有时有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31062865/

相关文章:

php - 将复选框数据从表单传递到 mysql 数据库

php - Jpgraph 不会改变我的条形图上的颜色

javascript - 分配多变量的更干净的方法

javascript - 原型(prototype)js库初学者

javascript - AJAX 调用 PHP 文件 : return value is empty

php - 如何在Zend框架2中开发不同布局的前端和后端?

php - 如何使用php在网页上的单个查询中显示多个表

javascript - Jquery Bootstrap Datepicker禁用过去的日期并且不自动填充输入框

javascript - 几秒后隐藏 div

javascript - 将索引发送到 XMLHttpRequest onLoad() 结果仅使用所有 onLoad() 的最后一个索引