0

一度に 1000 ~ 1500 枚の画像をサーバーにアップロードする必要があります。コードは次のとおりです。

public void add_data()
{
 DataSet ds = new DataSet();
                ds = get_Data();
                int p = 0;
                if (ds.Tables.Count > 0)
                {
                    if (ds.Tables[0].Rows.Count > 0)
                    {
                        int cnt = ds.Tables[0].Rows.Count;
                        while (cnt > 0)
                        {

                            string url = Convert.ToString(ds.Tables[0].Rows[p]["image_name"]);
                            string imagename = url.Substring(url.LastIndexOf('/') + 1);
                            string file_name = imagename;

                            save_file_from_url(file_name, url);
                            p++;
                            cnt = cnt - 1;
                        }
                    }
                }
}



public void save_file_from_url(string file_name, string url)
    {
        if (!File.Exists(file_name))
        {

            try
            {
                byte[] imgcontent;
                //Convert live images into byte array to pass it for ftp server
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
                WebResponse response = request.GetResponse();

                Stream stream = response.GetResponseStream();

                using (BinaryReader br = new BinaryReader(stream))
                {
                    imgcontent = br.ReadBytes(500000);
                    br.Close();
                }
                response.Close();

                string CompleteDPath = "www.xyz.com";
                string UName = "abc";
                string PWD = "pwd";
                WebRequest reqObj = WebRequest.Create(CompleteDPath + file_name);
                reqObj.Method = WebRequestMethods.Ftp.UploadFile;
                reqObj.Credentials = new NetworkCredential(UName, PWD);
                reqObj.GetRequestStream().Write(imgcontent, 0, imgcontent.Length);
                reqObj = null;


            }
            catch (Exception ex)
            {
                lblmessage.ForeColor = System.Drawing.Color.Red;
                lblmessage.Text = ex.Message;
            }
        }
    }

しかし、次のエラーが発生します

次のエラーが発生しました:

Read Timeout 

システムは以下を返しました:

[No Error]

ネットワークからのデータの読み取りを待機中にタイムアウトが発生しました。ネットワークまたはサーバーがダウンしているか、混雑している可能性があります。リクエストを再試行してください。

キャッシュ管理者はウェブマスターです。

何を使えばいいですか?助けてください!

4

1 に答える 1

0

画像が 1 つアップロードされたら、ネットワーク/データベース接続を閉じてください。読み取りタイムアウトは、接続がオンになっている時間が長すぎてタイムアウトになるためです。

または、1 つのステートメントで複数の行を挿入するなどのカンマを使用してクエリを作成することもできます

于 2012-04-28T23:26:00.893 に答える