web-application、c#.NET 私はUpdatepanelにマルチビューがあり、3つのビューがあります。 3番目のビューでは、私はファイルとその動作をアップロードしています。 最初のビューで私はファイルをダウンロードする必要があります。 私はそれを達成しました。 ダウンロード機能の後にもう1つAsyncFileUploadコントロールを追加したいと思います。 アップロードは問題ですが、最初にファイルをダウンロードしてからファイルをアップロードしようとすると、そのファイルは動作していません(同じビュー内)。 もし私がファイルをダウンロードしてアップロードするのではなく、ダウンロードしてファイルをアップロードすれば動作しないのかどうか。 ファイルをアップロードするコードは次のとおりです。ファイルをダウンロードした後、Fileuploadが機能しない
string filename = Path.GetFileName(AsyncFileUpload1.FileName);
string ext = Path.GetExtension(filename);
if (ext == ".exe" || ext == ".EXE" || ext == ".dll" || ext == ".DLL" || ext == ".config" || ext == ".CONFIG" || ext == ".com" || ext == ".COM")
{
fName = null;
lblStatus.Text = "You cant upload " + ext.ToString() + " Files";
}
else
{
string newfilename = e.filename;
string strPath = MapPath("../MsgAttach/") + Path.GetFileName(newfilename);
AsyncFileUpload1.SaveAs(strPath);
}
ここにファイルをダウンロードするコードを示します。
string filename = hd_file.Value.ToString();
string filepath = MapPath("../MsgAttach/" + filename);
if (File.Exists(filepath))
{
byte[] buffer;
using (FileStream fileStream = new FileStream(filepath, FileMode.Open))
{
int fileSize = (int)fileStream.Length;
buffer = new byte[fileSize];
// Read file into buffer
fileStream.Read(buffer, 0, (int)fileSize);
}
Response.Clear();
Response.Buffer = true;
Response.BufferOutput = true;
Response.ContentType = "application/x-download";
Response.AddHeader("Content-Disposition", "attachment; filename=" + filename);
Response.CacheControl = "public";
// writes buffer to OutputStream
Response.OutputStream.Write(buffer, 0, buffer.Length);
Response.End();
}
何か問題がありますか?
「作業していない」よりも正確なことはありますか? –
ファイルを最初にダウンロードしてファイルをアップロードしようとすると、ダウンロードしたファイルが再びダウンロードされます... – LeO
何か間違っていても、 'FileStream.Read'の呼び出しの結果は無視されます。 'Stream.Read'への呼び出しが、あなたが一回の呼び出しで必要なすべてのデータを読み込むとは決して*仮定してはいけません。 –