HTML5之拖拽上传文件及chrome下文件夹上传

标签: html5 上传 文件 | 发表时间:2012-02-23 16:50 | 作者:
出处:http://www.iteye.com

最近被安排做一个拖拽上传和文件夹上传的功能,不考虑兼容性,哈哈这个可以用HTML5实现。这里就不仔细学习HTML5,我只是想找例子,然后偷过来用,至于原理边用边学。

 

首先这里有一个很好的实例实现拖拽上传: http://blogs.sitepointstatic.com/examples/tech/filedrag/1/index.html

仔细看完估计原理你也会懂的。

 

然后是文件夹上传这里也有一个很好的实例: http://sapphion.com/2011/11/html5-folder-upload-with-webkitdirectory/ 这里文件夹上传只能在chrome11以后使用。

 

可是并不是那么一帆风顺,故事发生了:

 

文件夹上传的时候,如果文件夹内还有文件夹上面的那个例子就不能运行了,同时也不能保持目录结构。

 

js的方便就在于调试方便,更有利器console.log(obj).下面的内容是在仔细看了上面两个实例的基础上:

 

在第一个例子中有一个函数ParseFile,我在里面加了一个console.log(file),然后再chrome下面看到如下调试信息:


有了这个路径属性,我就可用在ajax中把次属性当做参数,用于保存目录结构。

 

 

xhr.open("POST", "upload.php?fname="+file.webkitRelativePath, true);

然后upload.php添加处理函数:

function createFolder($path) {
    if (!file_exists($path)) {
        createFolder(dirname($path));
        mkdir($path,0777);
    }
}

$fn = (isset($_SERVER['HTTP_X_FILENAME']) ? $_SERVER['HTTP_X_FILENAME'] : false);


    $fname = $_GET['fname'];
    if ($fname!=''&& $fname!='undefined') {
        createFolder('uploads/'.dirname($fname));
        $targetfile = 'uploads/' . $fname;
    }else{
        $targetfile = 'uploads/'.$fn;
    }
	// AJAX call
	if (file_put_contents($targetfile,file_get_contents('php://input'))){
	    echo "ok";
	}else{
	    echo "failed";
	}
	

 

 

于是解决了多次文件夹上传的功能。

-----------------------------------------------

代码依次是:实例1(拖拽上传),实例2(文件夹上传),修改后的多层文件夹上传(细节请包容)

 

体验HTML5的魅力请参考: http://html5-demos.appspot.com/

  http://dev.codingamusing.com/html5/upload_directory/

 

 





已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [html5 上传 文件] 推荐:

HTML5之拖拽上传文件及chrome下文件夹上传

- - ITeye博客
最近被安排做一个拖拽上传和文件夹上传的功能,不考虑兼容性,哈哈这个可以用HTML5实现. 这里就不仔细学习HTML5,我只是想找例子,然后偷过来用,至于原理边用边学. 首先这里有一个很好的实例实现拖拽上传: http://blogs.sitepointstatic.com/examples/tech/filedrag/1/index.html.

html5 图片上传预览

- - 博客园_首页
  前段时间做html5项目的时候,做了一个图片上传功能,并且可以直接预览,单纯的js就可以实现,很方便的.   这样做比调用后台方便多了,但是只支持html5的,html5以前是不支持的. 未来html5是主流,所以这种方法非常方便的.   几段js代码就可以来实现,而且解析速度也很快. 这种方法值得推广,以后前端也不要为这个烦恼了,还要后台用程序加载出来,那样太浪费时间了.

多文件上传

- - BlogJava-首页技术区
多文件上传 jquery的插件. 使用的方法  导入 jquery.js 及 jquery.MultiFile.js ,. 方式一: 后台是文件数组  .  private File[] upload; // 与jsp表单中的名称对应. 在 form 中加入 即可.

基于HTML5的可预览多图片Ajax上传

- Lynn - 张鑫旭-鑫空间-鑫生活
本文地址:http://www.zhangxinxu.com/wordpress/?p=1923. 在XHTML的时代,我们使用HTML file控件上传图片一次只能上传一张. 要一次上传多图,做法是借助于flash. 可惜,使用复杂的点,比如flash文件需与页面同父文件夹,JavaScript文件大小也很可观.

html5拖拽图片批量ajax无刷新进度上传

- - Web前端 - ITeye博客
之前有篇文章说到HTML5的拖拽(. 这里说的拖拽图片只是弱化了拖的概念,而强化了拽的操作. 从浏览器外部拖动一个文件到浏览器中来,如:. 拖动文件到浏览器之后,就会打开浏览器支持的文件,如常用的txt、图片等,如下:. 操作如上常用文件,一般都有默认行为来处理这样的事件. 这里说的拖拽上传也是一个道理,就是要做的是从浏览器外部拖动文件到浏览器中来,并且在当前页面上传该文件.

异步上传文件

- - Web前端 - ITeye博客
通过iframe来实现无刷新的的文件上传,其实是有刷新的,只是在iframe里面隐藏了而已. form里面的target要与iframe里面的id的值相等,指示是form相应了post事件,也就是post时间相应的时候刷新的是iframe而不是整个页面. 用户名:
上传头像:

dubbo处理文件上传

- - 开源软件 - ITeye博客
dubbo和hessian的maven依赖:. 服务提供者(项目名称:provider). 首先是web.xml配置(使用spring):. 最重要的applicationContext.xml :. 参考: dubbo hessian协议. .

springmvc文件上传下载

- - ITeye博客
在网上搜索的代码 参考整理了一份. commons-fileupload.jar与commons-io-1.4.jar二个文件. 1、表单属性为: enctype="multipart/form-data". 2、springmvc配置.

玩转HTML5应用实战:灵活拖拉文件

- - ITeye博客
本人原创作品,原文发表在:. 在HTML5中,出现了众多的新的技术和特性,而本文将介绍的是目前HTML5标准中,对如何将用户客户端的文件拖拉到浏览器这一特性进行初步的讲解. 在HTML5中的标准中,提到了希望能在新一代浏览器中,支持用户直接将客户端桌面的文件拖放到浏览器中,甚至鼓励做更多的工作(比如上传文件).

Filer.js:简化HTML5文件系统API开发的开源JS库

- - HTML5研究小组
在 W3C 的工作草案中,有一个雄心勃勃的底层 Web 标准开发计划即 HTML5 文件系统(Firesystem)API 规范. 所谓 Filesystm API 是一个提供在用户自定义的沙盒文件系统中读取与写入文件及目录的接口. 不过正如文件系统一样,该 API 代码较长而且复杂.   为此 Google Chorme 团队的工程师 Eric Bidelman 写了一个基于它的 JavaScript 包装库,Bidlelman 将其命名为 filer.js 并放在了 GitHub 上.