从<input type =“file”/>获取值将返回空字符串

时间:2014-01-17 08:49:35

标签: javascript input-type-file

我正在创建一个portlet,并在那里有一个文件上传器。我应该得到通过js上传的文件的名称。

HTML代码:

<form id="theuploadform" onsubmit = "javascript:setTimeout('fileupload_ajax_query_upload_status', 1000);"; action=<portlet:resourceURL/> method="post" enctype="multipart/form-data" encoding="multipart/form-data" target="postiframe">
    <input id="userfile" name="userfile" size="50" type="file" /> 
    <input id="formsubmit" type="submit" value="Upload to server" onclick="handleUploadDialogClose2();" />
</form>

和js部分:

function handleUploadDialogClose2() {
    var filepath = document.getElementById("userfile").value;
    alert(filepath);
}

我选择要上传的文件,单击“上传到服务器”按钮并检查输入元素的值 - 它是空的。但是我在其他问题中看到的代码非常相似,并且有效 我该怎么办才能让它发挥作用?

我做错了吗?

2 个答案:

答案 0 :(得分:1)

这应该有效:

function handleUploadDialogClose2() {
  var filepath = document.getElementById("userfile").files[0];
  console.log(filepath);
}

工作示例:js.bin

答案 1 :(得分:0)

您可以尝试删除表单中semi-colon属性后的onsubmit。它不应该像:

onsubmit = "javascript:setTimeout('fileupload_ajax_query_upload_status', 1000);"; 

但应该像:

onsubmit = "javascript:setTimeout('fileupload_ajax_query_upload_status', 1000);"

您也可以创建一个单独的函数来调用setTimeout(),而不是将函数调用放在属性中。

希望这可以帮助您解决问题!