2

私はaspアップローダーを持っており、ユーザーが画像をアップロードすると表示されますが、ユーザーは画像を削除できますが、Request.Filesから削除されないため、画像がアップロードされます。JavaScriptのRequest.Filesから削除するにはどうすればよいですか?

StepOne.aspx:http ://pastebin.com/EUCX783r StepOne.aspx.cs :http: //pastebin.com/aZ3UtV2F

4

2 に答える 2

2

読み取り専用であるため、FileListからファイルを直接削除することはできません。「」に設定すると、Filesコレクション内のすべてのファイルを削除できます。

document.getElementById('files').value = ""; //Removes all files in the input

ただし、これは個々のファイルでは機能しません。

推奨される回避策

フォーム内に非表示の入力要素を含め、この非表示の入力内で削除のマークが付けられているファイルを監視することで、これを処理できる可能性があります。

<input id='filesToDelete' name='filesToDelete' runat='server' type='hidden' />

削除を実行すると(Javascriptの使用を想定)、ファイルの名前をfilesToDeleteフィールドに追加できます(コンマで区切られます)。

//Within your delete Javascript method
document.getElementById('filesToDelete').value += (yourImg.title + ",");

アップロードがサーバーに投稿されるときに、ファイルのリストに含まれていないもののみをアップロードするように指定できます。カンマ区切りの値をコレクションに格納するだけです。必要に応じて、LINQを使用してコレクションを確認し、投稿されたファイルと比較します。

protected void YourUploadButton_Click(object sender, EventArgs e)
{
        //Get files to be deleted
        string[] filesToDelete = this.filesToDelete.Value.Split(',');

        //Your collection of files
        HttpFileCollection uploadFiles = Request.Files;
        for (int i = 0; i < uploadFiles.Count; i++)
        {
            //Checks the Posted File
            HttpPostedFile postedFile = uploadFiles[i];
            //If it isn't a file meant for deletion - don't upload
            if (!filesToDelete.Any(c => c == postedFile.FileName))
            {
                UploadToFTP(postedFile, i);
            }

        }
}

コードビハインドページの上部にLINQへの参照を含める必要があります。

using System.Linq;
于 2013-02-08T14:39:47.820 に答える
0

たぶん私は間違っているかもしれませんが、あなたのコードをチェックすることによって、画像のHTMLタグを削除するコードを見つけただけで、FileListからファイルを削除するコードを見ることができません。それが理由だと思います

于 2013-02-08T05:37:12.350 に答える