2012-06-21 2 views
0

Я пытаюсь загрузить и запустить файл на клиентской машине. Клиент знает об этом. Это файл ttkgp, который динамически генерируется. Я попытался использовать Processs.Start(), который отлично работал на моем локальном компьютере (сначала сохранил файл в C: \, а затем запустил его), но он не работает с сервером. Это не мой сервер, а хостинг. Они пытаются помочь, но пока не повезло. Я видел этот код:Загрузите и запустите файл на клиентской машине с помощью asp.net

public void ProcessRequest(HttpContext context) 
    { 
    string fileName = context.Request.QueryString["filename"]; 
    FileInfo fi = new FileInfo(fileName); 
    context.Response.ContentType = "application/x-rar-compressed"; 

    context.Response.AppendHeader("Content-Disposition", 
    string.Format("attachment; filename=download{0}", fi.Name)); 

    context.Response.WriteFile(fileName); 
    context.Response.End(); 

}

Но так как я не знаю, что это «HttpContext контекст», я понятия не имею, если он работает. Необходимо ли изменить некоторые серверные превалирования? или просто этот код будет делать трюк?

Спасибо

UPDATE (24.6.12): Я почти закончил с этой проблемой, все, что мне сейчас нужно знать, как открыть HTML-страницу в новой вкладке/окне и закрыть его второй позже , Как только я закончу, я отправлю обратно весь процесс, я уверен, что это поможет другим людям.

UPDATE (26.6.12): Вот что я получил: Цель состоит в том, чтобы загрузить файл TTKGP из asp.net Webiste на локальной машине пользователя и запустить его. Шаг 1: создать файл с кодом behaind (C#) на сервере (V) Шаг 2: скопировать файл или его содержание в машине пользователя (X) Шаг 3: запустить файл с помощью JS (V)

Вот что: я МОГУ скопировать из текстового файла на сервер в текстовый файл на компьютере пользователя, но не из файлов TTKGP. Это странно, потому что это просто текстовые файлы, которые просто отличаются друг от друга. Код для копирования текстовых файлов:

enter code here 
    function copyremotetxt() // works 
{ 
// copy the txt file 
var fso = new ActiveXObject("Scripting.FileSystemObject"); 

var newfile = fso.CopyFile("remote.txt", "C:\\Users\\***\\local.txt"); 
} 

Возможно, я могу изменить тип файла на компьютере пользователя?

Примечание 1: Я знаю, что это проблема безопасности, сайт только для известного пользователя не открытое публичного Примечания 2: Я знаю, что есть лучшие способы выполнения задачи, но существует строгие limitaions на многих вещах

Спасибо за то, что может помочь!

+2

Сервер не может запустить процесс на клиенте! Какая проблема безопасности, если это возможно. Напишите приложение клиент/сервер, если вы хотите сделать что-то вроде этого. –

ответ

0

Хорошо, это нужно другое aproach. Попытаюсь использовать JavaScript, прочитайте файл на сервере, перепишите его на компьютере пользователя и активируйте его. Любые подсказки были бы решены! Для начала, как я читаю файл в JS? Я новичок в этом.

+1

Это не будет работать. Просто невозможно посетить веб-страницу и автоматически загрузить и выполнить файл на компьютере, используемом для доступа к сайту. Если бы это было возможно, я мог бы обмануть вас во время посещения моего сайта и принудительно запустить файл DestroyMyHardDrive.exe для загрузки и выполнения на вашем компьютере! Это серьезная проблема безопасности. – AndyM

2

Этот код будет делать трюк. Он предложит клиенту загрузить и сохранить файл на своем компьютере в том месте, которое он решает. Что будет дальше с этим файлом, так это решение клиента, а не ваше. Он может просто закрыть диалоговое окно «Сохранить как», прервать загрузку, удалить файл, ... Это зависит от него.

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

+0

+1 для проблемы безопасности –

+0

Хорошо, я вижу, мне нужно другое aproach. Могу ли я использовать JS для открытия файла, который находится на сервере? –

+0

Нет, вы не можете использовать javascript для открытия файлов на сервере. –