私はASP.NET MVC Webシステムでファイルアップロード機能を実行しています。ファイルアップロード機能が動作しているので、次はファイルサイズを確認します。サーバでFileSizeを取得すると常にゼロです
<input type="file" name = "Files" class = "multi" id = "myFile"/>
メインフォームCreate.aspx(2048B以下)
<asp:Content ID="Content4" ContentPlaceHolderID="ContentCph" runat="server">
<script type="text/javascript">
$(document).on('click', '#btnCreateDocument', function() {
$('#btnCreateDocument').attr('disabled', 'disabled'); // prevent resubmit
Checksize()
document.body.style.cursor = 'wait';
});
function Checksize() {
alert(document.getElementById("myFile").tagName);
var k = document.getElementById("myFile").files[0].size;
alert("file size in KB " + k/1024);
}
</script>
<% Using (Html.BeginForm("Create", "GEDocument", FormMethod.Post, New With {.enctype = "multipart/form-data", .id = "form"}))%>
<input type="submit" name="Save" value="<%= Detail.Save %>" id="btnCreateDocument" />
<div id="Div1">
<% Html.RenderPartial("GEDocumentInfoForm", Model) %>
</div>
<% End Using%>
</asp:Content>
ファイルサイズの検証ました:
接続コードに 部分的な形GEDocumentInfoForm.ascxを参照してください。ローカルホストで正常に動作します。だから、私はそれを公開し、開発サーバーに展開しました。私はそれを実行すると、何とか私の検証を通過することができます。 Webブラウザのデバッグモードをチェックインした後、ファイルサイズは0を返します。
var k = document.getElementById("myFile").files[0].size;
私は、誰もが前に同様の問題を打つかどうかを確認するためのソリューションを検索しようとしました。最終的に、私はサーバの認証を私のコントローラに使用する必要があります。
Dim fileZs As HttpFileCollectionBase = Request.Files
For z As Integer = 0 To (fileZs.Count - 1)
Dim file As HttpPostedFileBase = fileZs(z)
If Not IsNothing(file) AndAlso (file.ContentLength/1024) > 2048 Then
errors.Concat(New RuleViolation(Message.EmailMustHaveValue, "SelectedToEmails"))
End If
Next
のWeb.Configは、私は、サーバーの検証はユーザーフレンドリーではないと思われる
<system.web>
<httpRuntime maxRequestLength="1048576" />
</system.web>
を(それが原因長すぎるの最大要求にコントローラにActionFilterAttributeを渡すことができるように設定を追加しました)。 クライアントの認証を使用して、ファイルアップロード機能でファイルサイズを確認すると、誰かが私のような問題に直面した場合、専門家からの回答があることを願っています。
- 開発サーバーに公開された後、常に0になるのはなぜですか?
- サーバーのセキュリティに関連していますか?私が知っているように、FileNameはC:\ fakePath \ myFileNameとしています。ここには何らかの関係がありますか?
チェック許可をアップロードするフォルダに書き込み権限を持っている必要があるためん。ContentLength
も、チェックですサーバー上のあなたのアップロードフォルダのうち – amirpaia
@amirpaia私は、IIS_IUSERSがinetpubの "APP_Data"フォルダを完全に制御していることを確認しました。 –
ちょうどそれを更新するために私はまだjavascriptのファイルサイズ= 0の根本原因を見つけることができません。 'function Checksize(){ アラート(document.getElementById(" myFile ")。tagName); var k = document.getElementById( "myFile")。files [0] .size; アラート( "KB単位のファイルサイズ+ k/1024)。 }、 '私は検証を"サーバー側の検証 "に変更することにしました。DimファイルAs HttpPostedFileBase = fileZs(z) Not IsNothing(file)AndAlso(file。ContentLength/1024)> 2048 Then \\表示エラーメッセージ 終了 ' –