2012-01-21 43 views
2

我正在使用我的網頁中的文件字段。我必須顯示文件字段的默認值。我使用了下面的代碼。文件字段值顯示錯誤

<input name="" type="file" value="test" /> 

但它不起作用。我怎樣才能做到這一點?

+0

這是不允許的。這不是一個文本框,你可以設置一個值。 – mrtsherman

+0

我爲文件字段設置了值。但它沒有顯示。 – designersvsoft

回答

2

不可能。文件字段被鎖定,以防止將默認設置設爲安全措施。如果您可以設置默認值,則可以使用

<input type="file" name="hackme" value="/etc/passwd" /> 

並且從客戶端計算機上竊取任意文件。

+0

是的。 w3.org說:「用戶代理可以使用值屬性的值作爲初始文件名」 - 我已經在我的答案中給出了鏈接 – Ninja

1

文件輸入字段不能有默認值。期。這是一個安全問題。不能這樣做。抱歉。


做了一些研究之後,他們似乎已經在HTML 5修改文件的輸入值屬性:

輸入。值[=值]

返回表單控件的當前值。

可以設置,更改值。

如果在控件是文件上載控件時設置爲空字符串以外的任何值,則會引發INVALID_STATE_ERR異常。

在獲取時,必須返回字符串 「C:\ fakepath \」 之後的第一個文件中選擇的文件列表中的文件名,如果有的話,或者如果列表爲空,則爲空字符串。 進行設置時,如果新值爲空字符串,則必須清空所選文件的列表;否則,它必須拋出一個INVALID_STATE_ERR異常。

所以看起來W3C已經與 「安全問題」 的推理和HTML5改變其行爲反正。我不認爲你會看到預定義文件輸入控件的值的能力。

1

儘管HTML 4.01規範說,「用戶代理可以使用值屬性的值作爲初始文件名,」它只是可能和瀏覽器一般不做那。一些過去的瀏覽器已經有這樣做的實現,並可能警告用戶有關風險,但那是多年前的事。

主要的安全問題是用戶根本不會注意到該字段(可能是因爲它在視覺上不明顯或隱藏)。但是這實際上是在文件上傳的原始設計RFC 1867中預料到的。它說:「HTML解釋代理可以確認任何默認的文件名,可以用<INPUT TYPE=file VALUE="yyyy">建議。」似乎瀏覽器供應商發現它太複雜了考慮到設置默認文件名的有效性相當有限(因爲偶文件名語法是平臺相關的)。