次のコードを使用してFTPサーバーに画像をアップロードしていますが、問題があります。アップロードする前に画像の寸法(高さと幅)を確認するコードを使用すると、FTPサーバーに.pngファイルが作成されていますが、空(または無効な形式)です。寸法を確認するコードを削除すると、画像が正しくアップロードされます。これについて何か考えている人はいますか?FTPへの画像のアップロード
public ActionResult UploadFile(int type, HttpPostedFileBase imagefile)
{
//check image height and width
using (System.Drawing.Image image = System.Drawing.Image.FromStream(imagefile.InputStream, true, true))
{
if (image.Width > 160 || image.Height > 160)
{
//do something here
}
}//end check image height and width
FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftpPath" + "/" + imagefile.FileName);
request.Credentials = new NetworkCredential("ftpUserName", "ftpPassword");
request.Method = WebRequestMethods.Ftp.UploadFile;
var sourceStream = imagefile.InputStream;
Stream requestStream = request.GetRequestStream();
request.ContentLength = sourceStream.Length;
int BUFFER_SIZE = imagefile.ContentLength;
byte[] buffer = new byte[BUFFER_SIZE];
int bytesRead = sourceStream.Read(buffer, 0, BUFFER_SIZE);
do
{
requestStream.Write(buffer, 0, bytesRead);
bytesRead = sourceStream.Read(buffer, 0, BUFFER_SIZE);
} while (bytesRead > 0);
sourceStream.Close();
requestStream.Close();
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
response.Close();
}
'FromStream'を呼び出すと、' InputStream'を消費し、ストリームの終わりに来ます。したがって、あなたがそれを後で読むとき、読むことは何も残っていません。ストリームを最初にリセットするか、すべてをバイト配列に読み込んで、それから別のストリームを作成する必要があります。 –
「正しくアップロードされました」ではなく「正しくアップロードされていません」と書いていましたか? – JohnH