我想改变上传按钮的样式,用的是以下代码:<html>
<head>
<title>File Upload Example</title>
<script language="JavaScript" type="text/javascript">
function HandleFileButtonClick()
{
document.frmUpload.myFile.click();
document.frmUpload.txtFakeText.value = document.frmUpload.myFile.value;
}
</script>
</head>
<body>
<form name="frmUpload">
<input type="file" name="myFile" style="display: none">
<input type="text" name="txtFakeText" readonly="true">
<input type="button" onclick="HandleFileButtonClick();" value="Browse">
</form>
</body>
</html>现在问题来了,如何获取上传文件的相关信息?比如在服务器端的路径和临时文件名?
也就是我现在在php中引用myFile时,无效。我估计是因为style="display: none"有关系。请达人指教!

解决方案 »

  1.   


    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html lang="en">
        <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <meta http-equiv="Content-Style-Type" content="text/css">
    <meta http-equiv="Content-Script-Type" content="text/javascript"> <title>input type=form Test Page</title> <script type="text/javascript" src="js/jquery.js"></script>
    <script type="text/javascript" src="js/jquery.inputform.js"></script> <link rel="stylesheet" href="css/form.css" type="text/css">
    <link rel="stylesheet" href="css/jquery.inputform.css" type="text/css">
    <script type="text/javascript"> $().ready(function(){
    $("input.select1").inputfile();
    $("input.select2").inputfile({button:"<img src='img/select.gif'>"});
    });

    </script>
    </head>
    <body> <fieldset class="form_fieldset">
    <legend>Input type styling</legend>
    <table class="form_table">
    <tr>
    <td class="caption">Upload File:</td>
    <td class="input"><input type="file" name="sfile" class="select1"/></td>
    </tr>
    <tr>
    <td class="caption">Main Image:</td>
    <td class="input"><input type="file" name="name" class="select2"/></td>
    </tr>


    </table>
    </fieldset> </body>
    </html>div.fakefile { position: absolute; top: 0px; left: 0px; z-index: 1;}
    input.file { left: -140px;position: relative; -moz-opacity:0 ; filter:alpha(opacity:0); opacity: 0; z-index: 2;}(function($) {$.fn.inputfile=function(options){ var settings = {
    button:"<button>Select file</botton>"
    }; $.extend(settings, options);
    this.each(function(){  var block_div=$("<div></div>").css({position: "relative"});
    var fake_div=$("<div></div>").addClass("fakefile");
    var button=$(settings.button);
    $(this).addClass("file"); $(this).wrap(block_div).after(fake_div.append(button));

    });


    }})(jQuery);
      

  2.   

    应该不会和Style有关的
    PHP段获取用$_FILE数组试试
    $_FILES数组内容如下:$_FILES['myFile']['name']   客户端文件的原名称。 
    $_FILES['myFile']['type']   文件的 MIME 类型,需要浏览器提供该信息的支持,例如"image/gif"。 
    $_FILES['myFile']['size']   已上传文件的大小,单位为字节。 
    $_FILES['myFile']['tmp_name']   文件被上传后在服务端储存的临时文件名,一般是系统默认。可以在php.ini的upload_tmp_dir 指定,但 用 putenv() 函数设置是不起作用的。 
    $_FILES['myFile']['error']   和该文件上传相关的错误代码。['error'] 是在 PHP 4.2.0 版本中增加的。下面是它的说明:(它们在PHP3.0以后成了常量) 
      UPLOAD_ERR_OK 
        值:0; 没有错误发生,文件上传成功。 
      UPLOAD_ERR_INI_SIZE 
        值:1; 上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。 
      UPLOAD_ERR_FORM_SIZE 
        值:2; 上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。 
      UPLOAD_ERR_PARTIAL 
        值:3; 文件只有部分被上传。 
      UPLOAD_ERR_NO_FILE 
        值:4; 没有文件被上传。 
        值:5; 上传文件大小为0
      

  3.   

    没看明白  
    lz是想改变上传文件的按钮?
    document.frmUpload.myFile.value里啥都没有 你把它付给别的值干啥
    你选择本地文件后,文件的路径是放在 name="txtFakeText" readonly="true" 里面的,
    应该 document.frmUpload.myFile.value=document.frmUpload.txtFakeText.value ;
    然后在submit
      

  4.   


    name="txtFakeText" readonly="true" 里面的是在客户端的文件路径。
    如果我要打开上传后服务器端后的这个文件,是需要其temp_name的。
    也就是,我现在如何用php取得其服务器端的路径。
    ps:js不知道能否获得这个路径。js能连接服务器端吗?用ajax?
      

  5.   

    var a = document.frmUpload.myFile.value;a 只有文件路径这个字符串,文件内容不会被赋值给 a......试试 1 楼的