Сохранение и извлечение файла .avi из Oracle 11g с помощью С#

Я хочу сохранить в таблице из моей базы данных файл .avi, используя С# и Oracle 11g.

Таблица простая

CREATE TABLE  VIDEOS
(
   id number,
   description varchar2(20), 
   video ORDSYS.OrdVideo 
);

Я использую форму в С#, получаю некоторые поля и вызываю процедуру из базы данных Oracle.

Процедура

create or replace
procedure inserareVideoBD(vid in number, vdescriere in varchar2, nfis in varchar2 )
is
begin 
    declare
        obj ORDSYS.ORDVideo;
        ctx RAW (64):=NULL;
    begin
        insert into videos values (vid, vdescriere, ordsys.ordvideo.init('FILE', 'DIR', nfis));
    commit;
    end;
end;

// упомянем, что файл DIR уже назначен и БД имеет к нему доступ, потому что изображения, которые я сохраняю, работают почти так же


Итак, после сохранения видео я хочу получить его с помощью этой процедуры

create or replace
procedure FETCHERVIDEO (vid in number, flux out blob, descriere out varchar2)
is
begin
declare
obj ordsys.ordvideo;
mimeType VARCHAR2(4000);
format VARCHAR2(31);
ctx RAW(64) :=NULL;
begin 
select video into obj from videos where id=vid;
 DBMS_LOB.CREATETEMPORARY(flux, true, 10);
 obj.getContentInLob(ctx,flux, mimeType,format);
select description into descriere from videos where id=vid;

end;
end;

После сохранения видео я хочу воспроизвести его с помощью проигрывателя Windows Media. Это код, который хочет выполнить это

OracleCommand cmd1 = new OracleCommand("fetchervideo", con);
                cmd1.CommandType = CommandType.StoredProcedure;

                cmd1.Parameters.Add("vid", OracleDbType.Int32);
                cmd1.Parameters.Add("flux", OracleDbType.Blob);
                cmd1.Parameters.Add("descriere", OracleDbType.Varchar2, 255);

                cmd1.Parameters[0].Direction = ParameterDirection.Input;
                cmd1.Parameters[1].Direction = ParameterDirection.Output;
                cmd1.Parameters[2].Direction = ParameterDirection.Output;

//get video id
                cmd1.Parameters[0].Value = Convert.ToInt32(comboBox1.SelectedItem);


                try { cmd1.ExecuteScalar(); }
                catch (OracleException exc) { Mesaj2.Text = "Mesaj: " + exc.Message; }

                OracleBlob var = (OracleBlob)cmd1.Parameters[1].Value;
                byte[] blob = new Byte[var.Length];
                File.WriteAllBytes(@"c://temp_mvi.avi", blob);

                try
                {
                    player.URL = "c://temp_mvi.avi";
                    player.Ctlcontrols.play();
                }

Проблема в том, что файл сохраняется по указанному пути, но его невозможно воспроизвести, пока исходный загруженный файл проигрывается на том же плеере.

Я что-то упустил, может кто-нибудь дать лучшую идею. Каждый ответ высоко ценится!


person Bogdan    schedule 20.01.2012    source источник


Ответы (1)


Если вы используете веб-приложение, я думаю, вам нужно указать тип контента на стороне html, чтобы он мог соответствующим образом отображать контент.

person Rika    schedule 13.09.2014