web-dev-qa-db-ja.com

asp:FileUploadの代わりに「<inputtype = "file" .... />」を使用する

既存のASP.NETプロジェクトを変更しています。元の作成者は、可視性を非表示に設定し、2つのカスタムスタイルの参照ボタンと保存ボタンを作成するだけで、スタイル付きasp:FileUploadを誤って作成しようとしました。

セキュリティ上の理由から、IEはこれを許可していません。私の戦略は、代わりに この例 のようにtype = "file"で入力タグを使用することです。 _<input type="file" ID="inputFile" />_のような入力を設定します。コードビハインドでファイルにアクセス/保存するにはどうすればよいですか?inputFile.SaveAs("someFile.txt");?また(コードビハインドで)_inputFile.HasFile_のようなことを行うことはできますか?これの他のアナログ?

推奨事項に従って、私は次のようなことを試みています:

_             <td>
                Enabled: <asp:CheckBox ID="CheckBox2" runat="server" />    &nbsp;&nbsp;
                <div id="testFileUploader">>
                   <input type="file" id="browserHidden" runat="server" />
                   <div id="browserVisible"><input type="text" id="fileField" /></div>
                </div>
             </td>
_
7
kmarks2

したがって、ASPXページのGUIDにあるCodeBehindに基づいて、将来のアップロード用にランダムなファイル名を生成できます。

HttpPostedFile filePosted = Request.Files["uploadFieldNameFromHTML"];

if (filePosted != null && filePosted.ContentLength > 0)
{
    string fileNameApplication = System.IO.Path.GetFileName(filePosted.FileName);
    string fileExtensionApplication = System.IO.Path.GetExtension(fileNameApplication);

    // generating a random guid for a new file at server for the uploaded file
    string newFile = Guid.NewGuid().ToString() + fileExtensionApplication;
    // getting a valid server path to save
    string filePath = System.IO.Path.Combine(Server.MapPath("uploads"), newFile);

    if (fileNameApplication != String.Empty)
    {
        filePosted.SaveAs(filePath);
    }
}

Request.Files["uploadFieldNameFromHTML"]の場合、ここでHTMLコードにIDを設定します。

<input type='file' id='...' />

また、ASPXページのメインフォームでrunat="server"を定義することを忘れないでください。メインフォームで設定し、enctype="multipart/form-data"<form>パラメーターを忘れないでください。

<body>
    <form enctype="multipart/form-data" id="form1" runat="server">
        <input type='file' id='uploadFieldNameFromHTML' />
...
14
Secret

Runat = "server"をオブジェクトに追加します。このようにして、他のasp:FileUploadコントロールと同じようにCodeBehidで機能します。

2
melancia

コメントしたように、runat = "server"を入力ファイルタグに追加できます。

別の手で、あなたが求めているものについての同様の投稿がすでにあります。これをチェックしてください:

FileUploadサーバーコントロールを使用せずにASP.netにファイルをアップロードする

この助けを願っています

乾杯!

1
MikePR
if(fileUrunResim.HasFile)
    fileUrunResim.SaveAs(MapPath("~/Images/" + fileUrunResim.FileName));


**if you unique filename,**

string extension = Path.GetExtension(fileUrunResim.FileName);

string fileName = Guid.NewGuid().ToString().Substring(0, 25) + extension ;


if(fileUrunResim.HasFile)
    fileUrunResim.SaveAs(MapPath("~/Images/" + filename ));
0
Abdullah SARGIN