【问题标题】:How to display name of file after file is uploaded上传文件后如何显示文件名
【发布时间】:2012-04-27 09:52:21
【问题描述】:

我有一个包含文件输入、上传按钮和取消按钮的表单:

更新:

    <form action='imageupload.php' method='post' enctype='multipart/form-data' target='upload_target' onsubmit='stopImageUpload(this);' class='imageuploadform' >
    <p class='imagef1_upload_form' align='center'><label>Image File: <input name='fileImage' type='file' class='fileImage' /></label>
    <input type='submit' name='submitImageBtn' class='sbtnimage' value='Upload' /></label>
    </p>
    <p class='imagef1_cancel' align='center'>
    <label><input type='button' name='imageCancel' class='imageCancel' value='Cancel' /></label>
    </p> 
<p><span class='list></span></p>
    <iframe class='upload_target' name='upload_target' src='#' style='width:0;height:0;border:0px;solid;#fff;'></iframe>
    </form>

现在我想要的是,如果图像已完成上传,则在此表单的底部我想要已上传文件的名称。这可能吗?比如我上传Images/file1.png,上传后文件名file1.png存放在底部,上传user/file2.jpg文件名file2.jpg存放在file1.png下面等等。

我上传的文件都是用 php 和 javascript 整理的。下面是上传完成后的javascript代码:

       $(document).ready(function(){
    $('.fileImage').bind('change', handleFileSelect, false);
});

function handleFileSelect(evt) {
    var files = evt.target.files;
    localStorage["fname"] = files[0].name; //save the name for future use
}
function stopImageUpload(success){
      var result = '';
      if (success == 1){
  result = '<span class="msg">The file ('+localStorage["fname"]+') was uploaded successfully!</span><br/><br/>';
    localStorage["fname"] = undefined; //remove the temporary variable

      }
      else {
         result = '<span class="emsg">There was an error during file upload!</span><br/><br/>';
      }

      return true;   
}

【问题讨论】:

  • 那么,您想要JavaScript 方式,还是PHP 方式?
  • 我希望它以 javascript 方式完成,因为 php 脚本位于表单的单独页面上
  • 查看我制作的演示:jsfiddle.net/xUzcS(使用 HTML5 File API)

标签: javascript jquery html


【解决方案1】:

JavaScript 方式

如果您的目标是现代浏览器(不再是 IE6789),那么File API 是您获取文件名的正确选择!它易于使用,而且代码不会乱七八糟。

查看我制作的演示:http://jsfiddle.net/xUzcS
这是你想要的吗?

但是如果你想支持那个旧的IE6,那么对不起,你必须走AJAX的方式,或者使用VBscript。 (不推荐)

添加

function handleFileSelect(evt) {
    var files = evt.target.files;
    localStorage["fname"] = files[0].name; //save the name for future use
}

document.getElementById('files').addEventListener('change', handleFileSelect, false);​

然后:

if (success == 1){
    result = '<span class="msg">The file ('+localStorage["fname"]+') was uploaded successfully!</span><br/><br/>';
    localStorage["fname"] = undefined; //remove the temporary variable
}

这可能对你有用,因为我不知道整个 html。

【讨论】:

  • 嗨,这就是我想要的,但我希望它显示的不是文件输入中的文件,而是从文件输入中上传的文件。所以名称应该只在上传完成后显示
  • 不,文件名显示在 &lt;input&gt;&lt;output&gt; 标记中。见截图:i.stack.imgur.com/JUT8s.png你可以将文件名保存在变量中,并在上传完成时显示。
  • 嗨,Derek,对不起,我在上面的评论中没有很好地评论。我的意思是,我希望文件名在文件上传后出现在文件输入下方,而不是在用户单击浏览按钮后选择文件后。我知道您已经在 jsfiddle 中向我展示了代码,但是在我的代码中您能否向我展示实现此目的的代码,以便在文件上传成功后输出文件名。如果您可以在我的代码中实现这一点,我会明确地将其标记为最佳答案:)
  • function stopImageUpload(success)与上传页面是否在同一页面?
  • 该函数与表单在同一页面,但在上传页面(单独页面),它在上传后调用该函数如下:&lt;script language="javascript" type="text/javascript"&gt;window.top.window.stopImageUpload(&lt;?php echo $result; ?&gt;);&lt;/script&gt;
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多