2013-04-09 3 views
0

У нас есть приложение winform, на котором есть браузер. Раньше эти файлы (всегда очень маленькие 10 КБ и т. Д.) Хранились в не-местоположении. Мы будем генерировать некоторые html и загружать html в браузер. Если бы мы хотели сделать один из этих небольших файлов, мы бы включили в HTML тег привязки() WHEN, когда html был отображен в элементе управления браузером, так будет ссылка. Пользователь может щелкнуть по ссылке и сохранить файл, поскольку появится диалоговое окно.Кнопка «Вложение» браузера Winform

Теперь мы сохраняем эти файлы в db как varbinary и, следовательно, больше нет физического местоположения для тега привязки, на который нужно указывать. У меня есть несколько мыслей, но хотелось бы, чтобы члены SO, которые умнее меня, чтобы прослушивать.

Вариант 1, на мой взгляд, будет иметь кнопку изображения, якорный тег, что-то в html, чтобы щелкнуть. Я бы обработал «onclick» либо в javascript, либо в качестве обратной передачи. Это кажется выполнимым для моего уровня знаний. ИСКЛЮЧЕНИЕ Я не знаю, как получить байт [], чтобы перевести его в диалоговое окно сохранения как пользователя ... я сначала его отформатирую на диск?

Другой идеей, которую я имел, была кнопка NOT в управлении браузера. Эта кнопка будет скрыта/видима, если в правилах biz сказано показать файл. Нажатие на кнопку затем сгенерирует байт [], который легко превратится в файл и сохранит, как показано в диалоговом окне, показанном в приложении winform.

Таким образом, любая мысль или все вместе различные предложения приветствуются ТИА JB

ответ

1

Я понимаю, что вы в управлении веб-страницы ASP.NET, показанной в окнах формы управления веб-браузера, так что вы можете редактировать эту страницу и постройте его так, как вы хотите.

Если это правда, поведение в размещенном веб-браузере или в обычном сеансе IE одинаково, и я бы предложил создать кучу гиперссылок или кнопок на странице веб-формы asp.net, каждый из которых имеет конкретный идентификатор, как идентификатор загружаемого файла. то вы можете создать обработчик или обработчик события button_click, где вы получите байт [] файла щелчком связанного файла/ссылки с соответствующим идентификатором файла или из строки запроса, если вы инициировали вызов обработчика, а затем вы начинаете потоковое воспроизведение до браузер содержимого файла, браузер сделает все, что вам нужно.

, например, только в качестве отправной точки, немного кода взято отсюда: http://social.msdn.microsoft.com/Forums/en-US/silverlightnet/thread/d6a5087f-43b1-4782-95f1-d1376130d2c8

показывает возможный способ сделать это от загрузки страницы, хитрость заключается в том, что вызов GetDocument получает надлежащее (в этом случае из строки запроса, представьте, что если мы находимся внутри метода обработки обработчика) и возвращает класс DocumentInfo, который содержит байты. вам также не нужен этот DocumentInfo, вы можете просто получить метод, который возвращает byte[] по идентификатору файла, например ...

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!this.IsPostBack) 
    { 
     string queryString = this.Request.QueryString.ToString(); 
     if (string.IsNullOrEmpty(queryString)) return; 

     DocumentInfo documentInfo = GetDocument(queryString); 

     if (!documentInfo.HasValue) return; 

     Response.ClearHeaders(); 
     Response.ClearContent(); 

     Response.AppendHeader("Content-Length", documentInfo.Value.Content.Length.ToString()); 

     Response.ContentType = "application/octet-stream"; 

     Response.AppendHeader("Content-Disposition", "attachment; filename=Test.doc"); 

     Response.BinaryWrite(documentInfo.Value.Content); 

     Response.End(); 
    } 
} 
Смежные вопросы