Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > LINQ (Language-Integrated Query) > как отобразить прогресс загрузки при сохранение в


Автор: teda 21.6.2010, 00:34
всем привет .

я сохраняю картинки в бд .
как мне подключить progressBar для отображения загрузки.

метод сохранения :

Код

protected void saveBtn_Click(object sender, EventArgs e)
    {
        string fileName = fileUpload1.FileName;
        byte[] fileByte = fileUpload1.FileBytes;
        Binary binaryObj = new Binary(fileByte);
        DataClassesDataContext context = new DataClassesDataContext();
        
        context.imageInfos.InsertOnSubmit(new imageInfo() { name = fileName, fileSource = binaryObj });
        context.SubmitChanges();
       
    }


всем спасибо.

Автор: jonie 22.6.2010, 08:50
teda, есть мнение что никак.... сохранять картинки можно не в базу, тогда отдельный сервису вы можете посылать попакетно данные и оценивать время..

Автор: teda 24.6.2010, 12:48
jonie, спасибо за мнение.  я так примерно и думал но не был уверен .

Автор: 1stain 30.6.2010, 12:45
varbinary(max) & varchar(max) также можно сохранять в базу частями (http://msdn.microsoft.com/en-us/library/ms177523.aspx секция Updating Large Value Data Types )

Код

private const int UploadChankSize = 8040;

protected void UploadButton_OnClick(object sender, EventArgs e)
    {
        if(FileUpload1.HasFile)
        {
            var buffer = new byte[UploadChankSize];
            
            using (var stream = FileUpload1.FileContent)
            using(var reader = new BinaryReader(stream))
            {
                buffer = reader.ReadBytes(UploadChankSize);

                var dataFile = new DataFile
                {
                    FileName = FileUpload1.FileName,
                    FileContent = buffer
                };

                using (var context = new TestDataModelDataContext())
                {
                    context.DataFiles.InsertOnSubmit(dataFile);
                    context.SubmitChanges();

                    buffer = reader.ReadBytes(UploadChankSize);

                    while(buffer.Length > 0)
                    {
                        context.AppendDataFile(dataFile.FileID, buffer);
                        buffer = reader.ReadBytes(UploadChankSize);
                        context.SubmitChanges();
                    }
                }
            }
        }
    }


Код

CREATE PROCEDURE dbo.AppendDataFile
    @FileID INT,
    @FileContent VARBINARY(MAX)
AS
    SET NOCOUNT ON
    
    UPDATE dbo.DataFile SET FileContent.WRITE(@FileContent, NULL, 0)
    WHERE FileID = @FileID;
    
    RETURN



соответственно заранее смотрите, сколько порций будет в файле и соответственно после каждой записи обновляете прогресс

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)