javascript - 无法限制文件数量并将其保存到数据库、图像 uploader Javascript 和 PHP

标签 javascript php jquery image

首先,我对 Javascript 很陌生,让我们告诉你我需要什么。

我有这个代码来制作一个图像 uploader ,在客户端调整它的大小并且工作完美,由 Joel Vardy 制作。 。但我需要限制上传的图像数量为 10。我不知道该怎么做...而且我找不到通过 php 在数据库上托管图像链接的方法

HTML

<head>
    <title>Upload Photos</title>
    <link rel="stylesheet" href="./style.css" />
<head>
<body>

    <h1>Upload Photos</h1>

    <form>
        <input type="file" accept="image/*" multiple />
        <div class="photos">

        </div>
    </form>

    <script src="./upload.js"></script>

</body>

JS

document.querySelector('form input[type=file]').addEventListener('change', function(event){
var files = event.target.files;

// Iterate through files
for (var i = 0; i < files.length; i++) {

    // Ensure it's an image
    if (files[i].type.match(/image.*/)) {

        // Load image
        var reader = new FileReader();
        reader.onload = function (readerEvent) {
            var image = new Image();
            image.onload = function (imageEvent) {

                // Add elemnt to page
                var imageElement = document.createElement('div');
                imageElement.classList.add('uploading');
                imageElement.innerHTML = '<span class="progress"><span></span></span>';
                var progressElement = imageElement.querySelector('span.progress span');
                progressElement.style.width = 0;
                document.querySelector('form div.photos').appendChild(imageElement);

                // Resize image
                var canvas = document.createElement('canvas'),
                    max_size = 1200,
                    width = image.width,
                    height = image.height;
                if (width > height) {
                    if (width > max_size) {
                        height *= max_size / width;
                        width = max_size;
                    }
                } else {
                    if (height > max_size) {
                        width *= max_size / height;
                        height = max_size;
                    }
                }
                canvas.width = width;
                canvas.height = height;
                canvas.getContext('2d').drawImage(image, 0, 0, width, height);

                // Upload image
                var xhr = new XMLHttpRequest();
                if (xhr.upload) {

                    // Update progress
                    xhr.upload.addEventListener('progress', function(event) {
                        var percent = parseInt(event.loaded / event.total * 100);
                        progressElement.style.width = percent+'%';
                    }, false);

                    // File uploaded / failed
                    xhr.onreadystatechange = function(event) {
                        if (xhr.readyState == 4) {
                            if (xhr.status == 200) {

                                imageElement.classList.remove('uploading');
                                imageElement.classList.add('uploaded');
                                imageElement.style.backgroundImage = 'url('+xhr.responseText+')';

                                console.log('Image uploaded: '+xhr.responseText);

                            } else {
                                imageElement.parentNode.removeChild(imageElement);
                            }
                        }
                    }

                    // Start upload
                    xhr.open('post', 'process.php', true);
                    xhr.send(canvas.toDataURL('image/jpeg'));

                }

            }

            image.src = readerEvent.target.result;

        }
        reader.readAsDataURL(files[i]);
    }

}

// Clear files
event.target.value = '';
});

PHP

$filename = md5(mt_rand()).'.jpg';
$data = file_get_contents('php://input');
$image = file_get_contents('data://'.substr($data, 5));
if ( ! file_put_contents('images/'.$filename, $image)) {
header('HTTP/1.1 503 Service Unavailable');
exit();
}
unset($data);
unset($image);
echo './images/'.$filename;

任何帮助将不胜感激,谢谢!

最佳答案

要将脚本限制为最多只能处理 10 个文件,请执行以下操作:

for (var i = 0; i < files.length; i++) {
    if (i < 11){

    }
}

对于数据库,阅读mysql并学习它。

关于javascript - 无法限制文件数量并将其保存到数据库、图像 uploader Javascript 和 PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25002008/

相关文章:

javascript - 如何仅在具有给定类名的特定 div 中查找 DOM 子节点?

javascript - 线条消失的CSS动画

javascript - 如何在 PayPal Javascript 代码中使用 PHP header() 函数

javascript - 为什么我在实现自动完成功能时收到 "Object does not support autocomplete jquery method"运行时错误?

javascript - 如何向 jQuery 对象中的元素添加类?

javascript - 如何保存对表行中复选框的引用?

javascript - document.getElementById.innerHTML 工作不正常?

PHP - 将文件转换为二进制文件并使用 HTTP POST 发送

php - session 容器在 zf2 中不工作?

javascript - 使用 php 数组在 jquery 中创建关联数组