2017-09-04 9 views
0

hereの次のコードを使用して、大きなファイルをftpサイトにアップロードします。 ファイルがサーバーにアップロードされると、私はRDPを使用してサーバーにアクセスし、別のプロセスによって使用されているため、そのサーバーを開くことができません。WebRequestストリーム共有モードをshare_readに設定する方法は?

私の質問は、書いている間にファイルを読むことができるようにファイル共有モードを設定できますか?アップロードされたファイルが書き込まれている間、そのファイルを読みたいと思います。

FileStream fs = null; 
Stream rs = null; 

try 
{ 
    string file = "D:\\RP-3160-driver.zip"; 
    string uploadFileName = new FileInfo(file).Name; 
    string uploadUrl = "ftp://ftp.Sitename.com/tempFiles/"; 
    fs = new FileStream(file, FileMode.Open, FileAccess.Read); 

    string ftpUrl = string.Format("{0}/{1}", uploadUrl, uploadFileName); 
    FtpWebRequest requestObj = FtpWebRequest.Create(ftpUrl) as FtpWebRequest; 
    requestObj.Method = WebRequestMethods.Ftp.UploadFile; 
    requestObj.Credentials = new NetworkCredential("usernam", "password"); 
    rs = requestObj.GetRequestStream(); 

    byte[] buffer = new byte[8092]; 
    int read = 0; 
    while ((read = fs.Read(buffer, 0, buffer.Length)) != 0) 
    { 
     rs.Write(buffer, 0, read); 
    } 
    rs.Flush(); 
} 
catch (Exception e) 
{ 
    MessageBox.Show("File upload/transfer Failed.\r\nError Message:\r\n" + ex.Message, "Succeeded", MessageBoxButtons.OK, MessageBoxIcon.Information); 
} 
finally 
{ 
    if (fs != null) 
    { 
     fs.Close(); 
     fs.Dispose(); 
    } 

    if (rs != null) 
    { 
     rs.Close(); 
     rs.Dispose(); 
    } 
} 

答えて

0

次のことを試してみてください、私がFileStreamをにFileShare.ReadWriteを追加しました:

string file = "D:\\RP-3160-driver.zip"; 
string uploadFileName = new FileInfo(file).Name; 
string uploadUrl = "ftp://ftp.Sitename.com/tempFiles/"; 

using (FileStream stream = File.Open(file, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) 
{ 
    string ftpUrl = string.Format("{0}/{1}", uploadUrl, uploadFileName); 
    FtpWebRequest requestObj = FtpWebRequest.Create(ftpUrl) as FtpWebRequest; 
    requestObj.Method = WebRequestMethods.Ftp.UploadFile; 
    requestObj.Credentials = new NetworkCredential("usernam", "password"); 
    using (Stream rs = requestObj.GetRequestStream()) 
    { 
     stream.CopyTo(rs); 
    } 
} 
+0

申し訳ありませんが、今してみてください、私は答えを更新 –

+0

を助けない...私のために働いているようです。 – Isma

+0

私を助けません。要求のストリームを処理する代わりに、ファイルのストリームを処理しています。 –

関連する問題