JavaScript实现的文件上传功能

需积分: 50 2 下载量 148 浏览量 更新于2024-09-12 收藏 27KB DOC 举报
这个资源提供了一段JavaScript代码,用于实现类似QQ邮箱的附件上传功能。作者aquaqin创建了一个HTML页面,其中包含JavaScript函数来处理文件选择和附件列表的管理。该代码允许用户选择文件并将其添加到附件列表中,同时提供了删除附件的功能。 以下是这段代码的关键知识点: 1. **文件上传控件**:HTML中的`<input type="file">`控件用于让用户选择本地文件。在IE浏览器中,不能直接通过JavaScript修改其`type`属性,因此使用`insertAdjacentHTML`方法动态插入HTML代码来创建这个控件。 2. **只读属性**:`<input type="file">`的`value`属性是只读的,这意味着你不能通过JavaScript直接设置它的值。这意味着用户必须重新选择文件,而不是简单地更新已选文件。 3. **onchange事件**:当用户选择新文件时,`onchange`事件触发。但是,如果用户删除最后一个文件后再选择同一个文件,`onchange`事件不会再次触发。因此,代码中使用了一个变量`i`来跟踪附件的数量,并通过`findAttachment`函数检查文件是否已存在于列表中。 4. **文件大小获取**:在客户端,JavaScript通常无法直接获取文件大小,除非使用文件系统对象(FSO)或ActiveX对象,但这通常受到浏览器安全性的限制。对于图像文件,可以通过加载图片后获取`fileSize`属性。另一种方法是使用Flash与JavaScript交互,但现代浏览器的安全策略可能对此有所限制。 5. **删除附件**:`delAttachment`函数用于从附件列表中删除选定的文件。它通过传递一个标识符来定位并移除相应的`<span>`元素。 6. **附件列表显示**:选择的文件名会显示在附件列表中,每个文件名后面都有一个“删除”链接,用户点击后可以移除附件。`_attachment`+`i`作为唯一ID分配给每个新创建的`<span>`元素,便于后续操作。 7. **JavaScript命名空间**:虽然在这个例子中没有明确的命名空间,但通过使用`G`函数来访问DOM元素,可以避免全局作用域的污染,这在大型项目中是非常重要的实践。 8. **版本控制**:代码的版本被标记为1.0,表明作者计划在未来进行改进和更新。 9. **跨浏览器兼容性**:这段代码可能需要针对不同的浏览器进行调整,以确保在所有目标平台上都能正常工作。例如,某些特性可能仅在特定浏览器中可用,需要添加条件语句或使用polyfills来增加兼容性。 这个资源提供了一个基础的文件上传实现,可以作为构建更复杂上传功能的起点,例如多文件上传、进度条显示、文件预览等。开发者需要根据实际需求和当前的浏览器环境对其进行扩展和完善。