2011-08-19 160 views
7

通常情况下,要上传文件,需要两步处理 - 选择一个文件,然后确认上传。我正在上传个人资料照片。由于配置文件图片通常很小,我希望通过在文件选择时启动文件上传来减少我的用户的鼠标点击。请提出很好的,也许是常见的方法来实现这一目标(如果有的话,我也想知道他们的陷阱)。谢谢。开始选择文件后上传

回答

6

当从文件上传字段中选择文件时,change事件将触发。如果未选择文件(字段被清除),字段的值将是''

<form method="post" action="upload.script"> 
    <input type="file" id="formfile"/> 
    <input type="submit" id="formsubmit"/> 
</form> 

<script type="text/javascript"> 
    var file= document.getElementById('formfile'); 
    var submit= document.getElementById('formsubmit'); 

    // If scripting is available, can auto-submit the form, so no submit 
    // button needed. 
    // 
    submit.parentNode.removeChild(submit); 

    // When field is filled in with a filename, submit form 
    // 
    file.onchange= function() { 
     if (this.value!=='') 
      this.form.submit(); 
    }; 
</script> 

这是个好主意吗?可疑的。如果用户不期望自动提交表单可能会产生负面影响。

+0

感谢您提供您的解决方案。至于你提到的问题,我认为这不会引起我主要关心的问题。 – tamakisquare

+0

对IE8的调用form.submit()会失败,并且访问被拒绝。 –

+0

@Maurice:?在IE6中对我很好。 – bobince

3

你可以使用jQuery自动发布该文件以在选择服务器...

问题:

如果哪些用户不想要选择该文件,但该文件已被上传到服务器?

如果上一次发生在文件上传完成之前该怎么办?

当用户什么都不做并关闭页面时如何?您要保留文件多长时间

1

如果您使用GMail,您会注意到它们具有用于将文件附加到电子邮件的拖放解决方案。从桌面拖动到预定义的区域和wallah。

如果您对使用此功能的人(如果他们保持最新状态,最应该这样做)支持HTML5,那么您可以使用内置于HTML5的拖放功能。

尝试寻找这个:http://www.thebuzzmedia.com/html5-drag-and-drop-and-file-api-tutorial/

你也可以给像Plupload一试(http://www.plupload.com/),但可能是矫枉过正这一点。 Plupload更适用于需要进度动画和分块的较大文件。但是,我知道你可以编写脚本,以便立即开始上传,并在完成后立即重定向。它也可能需要你没有设置的服务器端工作。

相关问题