js如何上传文件

JavaScript016

js如何上传文件,第1张

js采用File API 来上传文件的。

File API 由一组 JavaScript 对象以及事件构成。赋予开发人员操作在 <input type=”file” … />文件选择控件中选定文件的能力。图 1 展示了 File API 所有的 JavaScript 的组合关系。

File API 简单示例

<body>

<h1>File API Demo</h1>

<p>

<!-- 用于文件上传的表单元素 -->

<form name="demoForm" id="demoForm" method="post" enctype="multipart/form-data"

action="javascript: uploadAndSubmit()">

<p>Upload File: <input type="file" name="file" /></p>

<p><input type="submit" value="Submit" /></p>

</form>

<div>Progessing (in Bytes): <span id="bytesRead">

</span>/ <span id="bytesTotal"></span>

</div>

</p>

</body>

运行效果:

你js代码把文件以base64编码形式展示了出来,是为了让用户上传文件之前能够预览对吧。

文件的IO操作需要用后端来实现,如果你只是做web前端开发的话,就没有必要研究这个东西,如果你是后端开发者的话可以尝试一下,相关的资料很多,我写个示例吧,后端用php为例:

html实现:

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<title>ss</title>

</head>

<body>

<form action="file.php" method="post" enctype="multipart/form-data">

<input type="file" name="upfile">

<input type="submit" value="提交">

</form>

</body>

</html>

php实现(file.php):

<?php

@header('Content-Type:text/htmlcharset=utf-8')

if(!isset($_FILES['upfile'])){

exit('请选择您要上传的文件!')

}

if(!file_exists($_FILES['upfile']['tmp_name'])){

exit('您要上传的文件不存在!')

}

$file_dir=dirname(__FILE__).'/tmp'

if(!is_file($file_dir)){

@mkdir($file_dir,0777,true)

}

$file_ext='.jpg'

if(preg_match('/(\.\w+)$/', $_FILES['upfile']['name'],$ext_tmp)){

$file_ext=$ext_tmp[1]

}

$file_save_path=$file_dir.'/'.uniqid().mt_rand(101,999).$file_ext

@rename($_FILES['upfile']['tmp_name'],$file_save_path)

if(!file_exists($file_save_path)){

exit('文件上传失败!')

}

exit('文件上传成功!')