js在上传文件时,怎么取得文件的扩展名

山野村夫 2003-12-23 09:24:18
我只查到取得文件全名
<input type=file name=myfile>
<br/>
<input type=text name=filename>
<input type=button value="getName" onclick="textvalue()">


<script>
function getFileName() {
var sfile=document.all.myfile.value;
var reg=/([^\\]+)$/.exec(sfile);
return RegExp.$1;
}
function textvalue(){
document.all.filename.value=getFileName();
}
</script>
...全文
60 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
山野村夫 2003-12-23
  • 打赏
  • 举报
回复
谢谢
bencalie 2003-12-23
  • 打赏
  • 举报
回复
<input type=file name=myfile>
<br/>
<input type=text name=filename>
<input type=button value="getName" onclick="textvalue()">


<script>
function getFileName() {
var sfile=document.all.myfile.value;
var reg=/([^\.]+)$/.exec(sfile);
return RegExp.$1;
}
function textvalue(){
document.all.filename.value=getFileName();
}
</script>
文件断点续传,分片上传,二次封装百度webuploder,javaWeb版,简单易用。 相关说明: 如果开启分片上传,以下参数必须设置, 如果未开启,则不用带 chunkSize, threads:3, prepareNextFile:true, fileCheckUrl:'', checkChunkUrl:'', mergeChunksUrl:'' 常用接收扩展名 extensions ='gif,jpg,jpeg,bmp,png,3gp,mp4,rmvb,mov,avi,m4v,mp3'; 常用接收类型 mimeTypes ='image/,video/,audio/,application/'; 传入配置项说明 opt={ auto:false, 是否自动上传,默认false swf:"pageContext.request.contextPath/js/Uploader.swf",swf路径ie10以下用swf上传chunked:false,是否开启分块上传,默认false,不开启分片上传chunkSize:0,每块文件大小(默认5M)server:"{pageContext.request.contextPath}/UploadServlet", accept: { title: 'mediaFile', extensions: 'gif,jpg,jpeg,bmp,png,3gp,mp4,rmvb,mov,avi,m4v,mp3', mimeTypes: 'image/,video/,audio/,application/' }, fileNumLimit:1, fileSizeLimit:510241024, fileSingleSizeLimit:110241024 threads:3, //在上传当前文件,准备好下一个文件 prepareNextFile:true, fileCheckUrl:'',//检测文件是否存在url checkChunkUrl:'',//检测分片url mergeChunksUrl:'' //合并文件请求地址 } cb上传成功回调函数,cb要传入参数data fileCheckUrl,checkChunkUrl这两个接口返回的数据必须要包含字段ifExist,值是布尔类型 { "ifExist":true/false 文件是否存在 } 关于webuploader在Display=none的容器里面上传文件按钮不失效的说明,这是百度webuploder自身的的bug, 要隐藏容器,不要用display=none,使用这个样式来控制$selecter.addClass("hiden"); .hiden{ position: absolute; opacity: 0; filter:Alpha(opacity=0); }
PHP 5.2.0增加了一个取得文件上传状况的扩展。因为它不是放在PHP引擎内核中,所以如果对主机的有配置权限的话,你可以把这个扩展添加到任何PHP版本上而不必安装5.2.0版本。 PHP 5.2.0增加了一个取得文件上传状况的扩展。因为它不是放在PHP引擎内核中,所以如果对主机的有配置权限的话,你可以把这个扩展添加到任何PHP版本上而不必安装5.2.0版本。 第一步,在php.ini文件中添加拓展设置 extension=php_apc.dll ,同添加一条开关 apc.rfc1867 = on。 第二步,把dll文件放到扩展库目录下。可以在这里http://pecl4win.php.net/ext.php/php_apc.dll下载。 第三步,restart WEB Server 就ok了。 怎么使用呢?道理很简单。对上传的文件添加一个标记,就可以在其它的php程序中用这个标记访问它。这个标记通常叫做挂钩(Hook)。在上传文件的那个表单里面添加一个名字为APC_UPLOAD_PROGRESS的隐藏域(就如同限制文件大小的那个MaxFileSize隐藏域)。‘upload_’ 加上这个隐藏域的值就是用于访问文件的钩子。例如: 为什么钩子的值是用php的uniqid()函数取得呢?因为很多人同上传文件的话,不同文件的钩子不能相同啊。系统会把 APC_UPLOAD_PROGRESS域的值前面加上'upload_'生成钩子名称。在其它的php程序中就可以用apc_fetch()这个函数得到该文件的一系列信息了。假设APC_UPLOAD_PROGRESS的值是45c7f4d0b5f5b,那么在php中就可以这样: $status=apc_fetch('upload_'.'45c7f4d0b5f5b'); 得到相关数组变量$status,其中$status['current']为当前已上传大小(byte),$status['total']为文件总大小,上传完毕$status['done']的值等于1。 至于客户端嘛当然是用JS取得APC_UPLOAD_PROGRESS的值了,当然还有AJAX。我们得到的上传进度并不是理想连续的,如想获得更好的用户体验,需要在客户端用JS作进一步处理。 在写这篇文档的候,各空间商们基本没有采用版本5.2.0,文件异步上传只能使用一个折中的解决方式。此前真正的异步上传业界一直没有实现。国外有一个真正异步上传的例子,但它是在服务端用perl语言获取上传文件的信息,如果空间仅支持php不支持perl那就没辙。目前很多专做文件分享的网站都是由于具有系统配置权限从而添加了相应的服务器支持才实现的。这次php5.2.0发布的这个扩展,提供了真正的解决途径,只可惜空间商们不一定迅速采用这个版本。 目前使用的折中的解决方法是利用一个隐藏起来不显示的iframe。这个隐藏起来的iframe是真正用于上传文件的。用另一个文件域让用户选择文件,当用户选择了上传的文件之后,用JS取得用户的文件的路径然后赋值给那个隐藏的iframe中的文件域,令iframe中的表单提交。这那个显示的文件域可以被替换为图片或者文字什么的提示用户正在上传。用上传完毕后返回的JS作完毕处理。这个方法要求熟悉JS。另外它不是真正的异步,你会发现上传的候浏览器处于正在打开页面的状态,例如IE的地球图标在转动。关于文件异步上传就说这么多了。

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧