4

FileUpload コントロールを使用して大きなファイルをアップロードしています。localhost ではすべて正常に動作しますが、サーバーではファイルが破損します。アップロードはうまくいき、ファイルのサイズは正しいのですが、コンテンツが混同され、ファイルの一部が他の部分に上書きされます。

たとえば、次のようにします。

Original file:
abcdef0123456789

Uploaded file:
abc1230123456789

ファイルの 10 MB ごとにこのようなセグメントが約 1 つあり、長さはさまざまで、通常は 0.1 ~ 1 kB です。

私のコードは簡単です:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="UploadTest.Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:FileUpload ID="FileUpload1" runat="server" />

    </div>
    <p>
        <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Submit" />
    </p>
    <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
    </form>
</body>
</html>

そしてサーバー側:

using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace UploadTest
{
    public partial class Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            if (FileUpload1.HasFile) 
            {
                FileUpload1.SaveAs(AppDomain.CurrentDomain.BaseDirectory + "\\Files\\" + FileUpload1.FileName);
                Label1.Text = "Success " + FileUpload1.FileName;
            }
            else {
                Label1.Text = "No file";
            }
        }
    }
}

どのファイルをアップロードしようとしても、大きなファイル (> 10 MB) は破損します。

これはコードとは無関係だと思いますが、何か他のものに関連しています (ただし、これは私のクライアント コンピューターでのみ発生するわけではありません。これがクライアントの場合、それを使用している他の人に説明できるほど単純な解決策が必要です。関連している)。ウイルス対策ソフトウェアを無効にしようとしましたが、効果がありませんでした。ただし、データのアップロードを正しく処理するクライアントもあります。

投稿データを台無しにする可能性のあるものは他にありますか?

何か案は?ありがとう、アレスP

投稿が編集されました

4

2 に答える 2

0

<form>エンコーディング属性を に変更しますenctype="multipart/form-data"

于 2012-06-18T15:32:54.537 に答える
0

デフォルトのファイル サイズ制限を超えているようですが、この設定は変更できると思います。http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.fileupload.aspxを参照してください。

具体的には、メモリ制限に関するセクション。

編集

Django/ PyISAPIe /IIS を使用すると、大きな POST データが破損する

于 2012-06-18T15:34:21.867 に答える