单文件上传

随着Web应用的普及,文件上传功能成为许多网站和应用不可或缺的一部分。本文整理了个人学习过程中的笔记,为开发者提供全面的了解和实践经验。

单文件上传

在早期的html应用中,都是使用form标签中嵌套来实现文件上传的,具体代码如下

DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>单文件上传示例title>
head>
<body>
    <form action="/upload" method="post" enctype="multipart/form-data">
        <label for="fileInput">选择文件:label>
        <input type="file" id="fileInput" name="fileInput">
        <button type="submit">上传文件button>
    form>
body>
html>

上述实现方式是最原始也是最简单的代码实现,详细的元素说明如下

  • 元素包含了文件上传的整个表单,action 属性指定了处理文件上传的服务器端脚本,method 属性指定了表单提交的HTTP方法为 postenctype 属性设置为 multipart/form-data 以支持文件上传。
  • 元素用于显示文本标签,上述示例中label跟元素联动,提升用户体验。
  • 是文件上传的核心元素,它创建了一个文件选择框。id 属性用于关联 元素,name 属性用于标识在提交表单时的字段名。

这只是一个基本的HTML结构,实际上,要使文件上传功能更加完善,还需要使用后端技术来处理文件的接收和存储。涉及后端的代码逻辑就不在这里陈述了。后续会专门编写后端接收文件上传的相关文章。

另外单文件上传还可以结合JavaScript语言来实现,以下是一个简单的例子,演示如何使用JavaScript结合HTML实现文件上传,并通过Ajax发送文件到服务器

DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JavaScript文件上传示例title>
head>
<body>
    <input type="file" id="fileInput" />
    <button onclick="uploadFile()">上传文件button>
    <progress id="progressBar" value="0" max="100">progress>
    <div id="status">div>

    <script>
        function uploadFile() {
            var fileInput = document.getElementById('fileInput');
            var progressBar = document.getElementById('progressBar');
            var status = document.getElementById('status');

            var file = fileInput.files[0];
            if (!file) {
                status.innerHTML = '请选择文件';
                return;
            }

            var formData = new FormData();
            formData.append('file', file);

            var xhr = new XMLHttpRequest();

            xhr.open('POST', '/upload', true);

            xhr.upload.onprogress = function (e) {
                if (e.lengthComputable) {
                    var percent = (e.loaded / e.total) * 100;
                    progressBar.value = percent;
                    status.innerHTML = percent.toFixed(2) + '% 上传中...';
                }
            };

            xhr.onreadystatechange = function () {
                if (xhr.readyState === 4 && xhr.status === 200) {
                    status.innerHTML = '上传完成';
                } else if (xhr.readyState === 4 && xhr.status !== 200) {
                    status.innerHTML = '上传失败';
                }
            };

            xhr.send(formData);
        }
    script>
body>
html>

本人这里也提供一个基于Vue3的文件上传实现,代码如下






你可能感兴趣的:(前端学习笔记,前端)