`
xiaoshenge
  • 浏览: 169083 次
  • 性别: Icon_minigender_1
  • 来自: 十堰
社区版块
存档分类
最新评论

HTML5拖拽上传文件,chrome文件夹上传

阅读更多

最近被安排做一个拖拽上传和文件夹上传的功能,不考虑兼容性,哈哈这个可以用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://html5-demos.appspot.com/static/html5storage/demos/upload_directory/index.html

 

最新代码请查看 https://github.com/xiaoshenge/html5demo

                      http://html5file.sinaapp.com/(效果演示,由于sae有上传限制)

 

 

  • 大小: 15.2 KB
2
0
分享到:
评论
4 楼 langxuanlovehai 2014-08-28  
楼主能搞个java版本的吗?你的php看不懂
3 楼 gotolnc 2013-06-15  
不错
2 楼 xiaoshenge 2012-02-25  
togoog 写道
真不错,效果很好,谢谢

最新代码: https://github.com/xiaoshenge/html5demo
1 楼 togoog 2012-02-24  
真不错,效果很好,谢谢

相关推荐

    HTML5 拖拽批量上传文件的示例代码

    该组件基于 Vue.js 实现,UI 框架是 elementUI,完整的 demo 地址在https://github.com/Msxiaoma/upload-folder. 拖拽上传文件夹(仅仅chrome支持) 一、组件描述 同时拖拽多个文件夹 删除指定文件夹 显示当前文件夹...

    文件上传插件

    拖放上传是HTML5引入的一种功能,使得用户可以直接从他们的文件系统拖动文件到浏览器窗口,然后由插件处理上传过程。这种技术极大地简化了用户操作,无需再通过传统的方式——点击按钮,浏览本地文件,然后再选择...

    交叉请求:支持Chrome73以上版本的文件上传

    本文主要解决YApi不能上传文件的问题跨请求不支持文件上传Yapi测试集合不支持文件上传,导致测试用例无法运行解决cross-request不支持文件上传的问题chrome在73版本后,限制了content-script跨域请求。目前只有一个...

    WEB大文件上传网址整理

    - **文件夹上传支持**:对于Chrome21+、Opera15+等版本的浏览器,支持整个文件夹的上传操作。 - **用户界面定制**:从版本1.4开始,支持用户自定义UI界面,进一步提升了使用的灵活性。 #### 快速上手指南 - **克隆...

    h5图片上传插件

    在你提供的压缩包文件“html5upload”中,很可能是包含了一个实现这些功能的H5图片上传插件的源代码或者示例。通常,这样的文件夹会包含HTML文件用于展示插件的使用方式,JavaScript文件包含实际的插件代码,CSS文件...

    chrome 常用插件 crx文件

    要手动安装CRX文件,你可以直接将文件拖拽到扩展页面,或者在开发者模式下通过“加载已解压的扩展程序”来选择包含CRX文件的文件夹。 在提供的文件列表中,“Docs PDF_PowerPoint Viewer(由 Google 提供).crx”是...

    Uploader-README-zh

    Uploader 是一个功能强大且灵活的上传库,支持多并发上传、文件夹上传、拖拽上传、暂停续传、秒传、分块上传、出错自动重传、手工重传、进度、剩余时间、上传速度等特性。下面我们将详细介绍Uploader 的特性和使用...

    FineUploader-master_上传_

    6. **拖拽上传**:支持拖放操作,用户可以直接从桌面或文件夹中拖动文件到浏览器窗口进行上传。 7. **自定义界面**:FineUploader提供了高度可定制的界面,允许开发者根据自己的设计需求进行调整。 8. **服务器端...

    webuploader.js多图片上传插件.zip

    这得益于其内部对HTML5 File API的深入利用,能够处理大文件分块上传,确保上传过程的稳定性和速度。 2. **图片排列顺序调整**:用户在上传过程中可以自由调整图片的展示顺序,这在创建图片集或者相册时非常实用。...

    如何上传我的网站,初级学习

    3. **上传文件**:将本地的网站文件拖拽至FTP工具的服务器窗口,开始上传过程。 4. **完成上传**:等待所有文件上传完毕后,在浏览器中输入域名或IP地址进行访问,确认网站已成功上线。 ### 四、JavaScript与广告...

    php批量上传图片代码

    5. 支持文件拖拽操作。 6. 支持自定义上传信息。 7. 快速编辑。旋转操作。 8. 显示上传进度。 9. 支持文件格式批量转换。 10. 支持打开默认文件夹功能。 11. 免费提供JavaScript SDK包,方便您将插件快速集成到已有...

    web网页批量上传图片代码

    5. 支持文件拖拽操作。 6. 支持自定义上传信息。 7. 快速编辑。旋转操作。 8. 显示上传进度。 9. 支持文件格式批量转换。 10. 支持打开默认文件夹功能。 11. 免费提供JavaScript SDK包,方便您将插件快速集成到已有...

    织梦整合百度编辑器,传图方便了,截图+多图上传

    6. **多图上传**:UEditor支持批量上传图片,用户可以通过选择文件或拖拽文件到指定区域来上传多张图片。我们需要确保服务器端有相应的处理程序接收并保存这些图片。 7. **权限控制**:根据织梦的权限体系,可能...

    Using the HTML5 Filesystem API

    HTML5的拖放(Drag and Drop)API使得用户可以直接从桌面或其他应用拖拽文件到Web页面中。这些文件同样可以被保存到本地文件系统。 ```javascript document.addEventListener('drop', function(e) { e....

    搜狐企业网盘使用方法.docx

    对于上传的文件大小限制,支持HTML5的现代浏览器(如Chrome、Firefox、搜狗高速浏览器等)没有上传文件大小上限,且支持批量上传、断点续传以及直接拖拽上传。然而,对于不支持HTML5的浏览器(如IE6至9、部分双核...

    KODExplorer 芒果云-资源管理器

    chrome支持文件夹拖拽上传。 [文件打开] office文件在线预览功能,服务器必须在公网(外部能访问该服务器) [忘记密码] 修改data/system/member.php 密码为明文的md5值 例如将admin密码重设为admin 则修改第一行:...

    liqi-crx:一种Chrome浏览器扩展应用

    调试方法是通过将文件夹直接拖拽到Chrome浏览器上,然后访问“chrome://extensions/”页面进行查看。这提示我们,该扩展应用的源代码可能包含在提供的压缩包中,用户可以自行查看和修改代码以进行调试或定制。 **...

    FckEditor (刚刚上传的那个缺点东西 )

    - **插件扩展**: 它支持丰富的插件扩展,可以增加如图片上传、视频嵌入、表格编辑等功能。 - **样式系统**: 提供了一套完整的样式系统,帮助保持文本的一致性和专业外观。 - **兼容性**: 兼容多种浏览器,包括...

    kindeditor.rar

    2. **拖拽上传**:集成文件上传功能,用户可以通过拖拽或点击按钮轻松上传图片、文档等文件到服务器,提高了工作效率。 3. **代码模式**:除了可视化编辑,KindEditor还提供了源代码编辑模式,方便开发者直接进行...

    eWebEditor php版

    它会接收用户通过eWebEditor 上传的文件,进行合法性检查、存储路径设定、文件名重命名等操作,确保上传的文件能正确保存到服务器。 - **ewebeditor.php**: 主编辑器脚本,包含了编辑器的初始化、事件处理、功能...

Global site tag (gtag.js) - Google Analytics