2011-08-17 17 views
0

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(); 
     } 

何か問題がありますか?

+1

「作業していない」よりも正確なことはありますか? –

+0

ファイルを最初にダウンロードしてファイルをアップロードしようとすると、ダウンロードしたファイルが再びダウンロードされます... – LeO

+0

何か間違っていても、 'FileStream.Read'の呼び出しの結果は無視されます。 'Stream.Read'への呼び出しが、あなたが一回の呼び出しで必要なすべてのデータを読み込むとは決して*仮定してはいけません。 –

答えて

0

私はこの同じ問題を抱えていたとき、私はいくつかの問題があったが、私はこれと同じ不便である誰かが、このチップはあなたが助けることができることを願って、これらの日に彼を探して:

linkMass string = <your new page aspx>; 
             ScriptManager.RegisterStartupScript (this.Page, this.GetType(), "script1", "window.open ('" + linkMass +' ',' _self '' directories = no, toolbar = no, scrollbars = no, resizable = no, top = 10, left = 10, width = 200, height = 100 '); ", true); 

が値を考えてみましょう'_self'をダウンロードして同じページをダウンロードし、新しいaspxコードをダウンロードしてください。

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(); 
関連する問題