Как получить путь к папке Мои документы текущего пользовател
От: soljen Интернет  
Дата: 21.08.06 15:39
Оценка:
Доброго времени суток дамы и господа!

Такое дело: хочу чтоб отчёт сохранялся только в папку "Мои документы" текущего пользователя! Название отчёта будет задаваться отдёльно.
Подскажите как обратиться к этой системной папке? Кажется что-то Environment.что-то-то... но точно не знаю...
И не будет ли проблем если эти папаки лежат на серваке, т.е. если зайти в папку — то оказывается \\Server\....\UserMane\MyDocuments ?

Спасибо!
... << RSDN@Home 1.2.0 alpha rev. 655>>
Тиха украинская ночь, но сало надо перепрятать!!!
Как получить путь к папке Мои документы текущего пользовател
От: Аноним  
Дата: 21.08.06 15:57
Оценка:
Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re: Как получить путь к папке Мои документы текущего пользов
От: soljen Интернет  
Дата: 22.08.06 09:42
Оценка:
Доброго времени суток, Pred!

P>Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);


Спасибо конечно, но я не полностью получается сформулировал вопрос!

В общем работаю с ASP.NET на VB.NET.
У меня ругается на выделенное! Нету такого...
А вызвать окно "Сохранить как..." можно только для WinForms.

Вот отсюда и вопрос, как мне "взять" путь к папке мои документы? Дальше я буду StringBuilder-ом собирать название документа, строить полный путь так сказать — и записывать туда отчётик...

Спасибо!
Тиха украинская ночь, но сало надо перепрятать!!!
Re[2]: Как получить путь к папке Мои документы текущего поль
От: TK Лес кывт.рф
Дата: 22.08.06 09:45
Оценка: 1 (1)
Hello, "soljen"

> Вот отсюда и вопрос, как мне "взять" путь к папке мои документы? Дальше я

> буду StringBuilder-ом собирать название документа, строить полный путь так
> сказать — и записывать туда отчётик...
>

Полные пути лучше строить через Path.Combine
Posted via RSDN NNTP Server 2.0
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[2]: Как получить путь к папке Мои документы текущего поль
От: vitz  
Дата: 22.08.06 09:56
Оценка: 15 (2)
Здравствуйте, soljen, Вы писали:

S>Доброго времени суток, Pred!


P>>Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);


S>Спасибо конечно, но я не полностью получается сформулировал вопрос!


S>В общем работаю с ASP.NET на VB.NET.

S>У меня ругается на выделенное! Нету такого...
S>А вызвать окно "Сохранить как..." можно только для WinForms.

S>Вот отсюда и вопрос, как мне "взять" путь к папке мои документы? Дальше я буду StringBuilder-ом собирать название документа, строить полный путь так сказать — и записывать туда отчётик...


S>Спасибо!

Папка "Мои документы" является частью локального пользовательского профиля. А твое приложение ASP.NET работает на сервере саааавсем под другой учетной записью и если использовать Environment то это будет Environment именно сервера с ASP.NET. Так что ты в корне не верно задал вопрос.
А по поводу сохранения файла: пиши в Response

this.Response.ContentType = "image/JPG"; //MIME твоего файла (не обязательно "image/JPG"!!!)
this.Response.AddHeader("Content-Disposition",
                        string.Format("attachment; filename=\"{0}\"",Name));//ИМЯ ФАЙЛА
this.Response.OutputStream.Write(...)
Re[3]: Как получить путь к папке Мои документы текущего поль
От: soljen Интернет  
Дата: 22.08.06 09:58
Оценка:
Доброго времени суток, TK!

TK>Полные пути лучше строить через Path.Combine


Спасибо!
Ознакомлюсь, интересно...
Но всё равно мне надо опираться на Мои документы... у пользователей больше никуда нет доступа чтоб их (свои документы) сохранять...
Тиха украинская ночь, но сало надо перепрятать!!!
Re[3]: Как получить путь к папке Мои документы текущего поль
От: soljen Интернет  
Дата: 22.08.06 10:04
Оценка:
Доброго времени суток, vitz!

V>Папка "Мои документы" является частью локального пользовательского профиля. А твое приложение ASP.NET работает на сервере саааавсем под другой учетной записью и если использовать Environment то это будет Environment именно сервера с ASP.NET. Так что ты в корне не верно задал вопрос.


Согласен!


V>А по поводу сохранения файла: пиши в Response

V>this.Response.ContentType = "image/JPG"; //MIME твоего файла (не обязательно "image/JPG"!!!)
V>this.Response.AddHeader("Content-Disposition", string.Format("attachment; filename=\"{0}\"",Name));//ИМЯ ФАЙЛА
V>this.Response.OutputStream.Write(...)

Не совсем понял этот фрагмент, но щас попробую... Спасибо!
Тиха украинская ночь, но сало надо перепрятать!!!
Re[4]: Как получить путь к папке Мои документы текущего поль
От: vitz  
Дата: 22.08.06 10:14
Оценка: 2 (1)
Здравствуйте, soljen, Вы писали:

S>Доброго времени суток, vitz!


V>>Папка "Мои документы" является частью локального пользовательского профиля. А твое приложение ASP.NET работает на сервере саааавсем под другой учетной записью и если использовать Environment то это будет Environment именно сервера с ASP.NET. Так что ты в корне не верно задал вопрос.


S>Согласен!



V>>А по поводу сохранения файла: пиши в Response

S>
V>this.Response.ContentType = "image/JPG"; //MIME твоего файла (не обязательно "image/JPG"!!!)
V>>this.Response.AddHeader("Content-Disposition", string.Format("attachment; filename=\"{0}\"",Name));//ИМЯ ФАЙЛА
V>>this.Response.OutputStream.Write(...)

S>Не совсем понял этот фрагмент, но щас попробую... Спасибо!
Во фрагменте говорится о том, что чтобы браузер пользователя воспринял твой файл прально, нуна прописать хеддеры, а дальше пишешь се в поток файл
на стороне клиента пользователь получит окошко типа "Загрузить, Открыть, Оклонить " и может делать с ним все что угодно
Фрагмент код — это просто наводка на мысль.
Re[5]: Как получить путь к папке Мои документы текущего поль
От: soljen Интернет  
Дата: 22.08.06 11:01
Оценка:
Доброго времени суток, vitz!

V>>>А по поводу сохранения файла: пиши в Response

S>>
V>this.Response.ContentType = "image/JPG"; //MIME твоего файла (не обязательно "image/JPG"!!!)
V>>>this.Response.AddHeader("Content-Disposition", string.Format("attachment; filename=\"{0}\"",Name));//ИМЯ ФАЙЛА
V>>>this.Response.OutputStream.Write(...)

S>>Не совсем понял этот фрагмент, но щас попробую... Спасибо!
V>Во фрагменте говорится о том, что чтобы браузер пользователя воспринял твой файл прально, нуна прописать хеддеры, а дальше пишешь се в поток файл
V>на стороне клиента пользователь получит окошко типа "Загрузить, Открыть, Оклонить " и может делать с ним все что угодно
V>Фрагмент код — это просто наводка на мысль.

Мысль хорошая, и скорее всего правильная всуе...
Возник вопрос: где найти список всех .ContentType = "***", в МСДН-е не нашёл...

Спасибо!
Тиха украинская ночь, но сало надо перепрятать!!!
Re[3]: Как получить путь к папке Мои документы текущего поль
От: soljen Интернет  
Дата: 22.08.06 11:08
Оценка:
Доброго времени суток, дамы и господа!

Помогите этот фрагммент перевести на VB.NET! А то никак не могу разрулить его... что-то туговато идёт C#...
V>
this.Response.ContentType = "image/JPG"; //MIME твоего файла (не обязательно "image/JPG"!!!)
V>this.Response.AddHeader("Content-Disposition", string.Format("attachment; filename=\"{0}\"",Name));//ИМЯ ФАЙЛА
V>this.Response.OutputStream.Write(...)

Спасибо!
Тиха украинская ночь, но сало надо перепрятать!!!
Re[4]: Как получить путь к папке Мои документы текущего поль
От: soljen Интернет  
Дата: 22.08.06 11:28
Оценка:
Получилось так:

Dim FileName As String
Me.Response.ContentType = "text/html"
Me.Response.AddHeader("Content-Disposition", String.Format("attachment; filename=\" & FileName & "\"))

И даже работает, но вот вопрос: где указать что мне надо загружать? В таком варианте он сохраняет страницу, а мне надо бы ReportDocement.

Спасибо!
Тиха украинская ночь, но сало надо перепрятать!!!
Re[5]: Как получить путь к папке Мои документы текущего поль
От: akasoft Россия  
Дата: 24.08.06 00:41
Оценка: 16 (2)
Здравствуйте, soljen, Вы писали:

Используй в качестве ContentType "application/octet-stream", будет бинарный формат.

За всеми видами ContentType смотреть надо RFC, искать "Internet Media Types".
... << RSDN@Home 1.2.0 alpha rev. 655>> SQL Express 2005
Re[6]: Как получить путь к папке Мои документы текущего поль
От: soljen Интернет  
Дата: 25.08.06 09:32
Оценка:
Доброго времени суток, akasoft!

A>Используй в качестве ContentType "application/octet-stream", будет бинарный формат.


A>За всеми видами ContentType смотреть надо RFC, искать "Internet Media Types".


Спасибо за инфу... ознакомлюсь, очень интересно...
Но я сделал так, через Ж как грится, конечно некрасиво и наверное не очень оптимально... пока работает....
       Dim ExpotrOptions As New CrystalDecisions.Shared.ExportOptions
        Dim DiskFileDestinationOptions As New CrystalDecisions.Shared.DiskFileDestinationOptions
        Dim FormatTypeOptions As New CrystalDecisions.Shared.PdfRtfWordFormatOptions

        ' Формуємо назву для файлу
        Dim pathFN As String = ""
        Select Case CrystalReportPath
            Case "CrystalReports/crInvoice.rpt"
                pathFN = "Invoice"      ' Видаткова накладна
                ' тут будуть додаватися різні назви згідно зі звітами
        End Select

        ' Формуємо розширення файлу
        Dim pathFR As String = ""
        Select Case ddlTypeExport.SelectedValue
            Case 0
                pathFR = ".doc"     ' Документ MS Word
            Case 1
                pathFR = ".pdf"     ' PortableDocFormat
        End Select

        ' Формуємо шлях та назву файлу
        DiskFileDestinationOptions.DiskFileName = SavePath & pathFN & pathFR

        ExpotrOptions = rDocument.ExportOptions
        With ExpotrOptions
            .ExportDestinationType = ExportDestinationType.DiskFile
            Select Case ddlTypeExport.SelectedValue
                Case 0
                    .ExportFormatType = ExportFormatType.WordForWindows
                Case 1
                    .ExportFormatType = ExportFormatType.PortableDocFormat
            End Select
            .DestinationOptions = DiskFileDestinationOptions
            .FormatOptions = FormatTypeOptions
        End With

        ' Безпосередньо вивантаження даних до файлу
        Try
            rDocument.Export()
        Catch ex As Exception
            lblError.Text = ""
            lblError.Text = "Помилка під час експорту звіту!" & ex.Message
            Exit Sub
        End Try

        'Відкриваємо файл
        Dim str As FileStream
        Try
            str = File.Open(DiskFileDestinationOptions.DiskFileName, FileMode.Open)
        Catch ex As Exception
            lblError.Text = ""
            lblError.Text = "Помилка під час відкриття файлу!" & ex.Message
            Exit Sub
        End Try

        ' Зчитуємо файл
        Dim bReader As New BinaryReader(str)
        Dim l As Long = bReader.BaseStream.Length
        Dim Doc(l) As Byte
        Try
            str.Read(Doc, 0, CInt(l))
        Catch ex As Exception
            lblError.Text = ""
            lblError.Text = "Неможливо відкрити файл!" & ex.Message
            Exit Sub
        End Try

        ' Закриваємо файл
        Try
            str.Close()
        Catch ex As Exception
            lblError.Text = ""
            lblError.Text = "Неможливо закрити файл!" & ex.Message
            Exit Sub
        End Try

        ' Видаляємо тимчасовий файл
        Try
            File.Delete(DiskFileDestinationOptions.DiskFileName)
        Catch ex As Exception
            lblError.Text = ""
            lblError.Text = "Неможливо виконати видалення файлу з експортованими даними!" & ex.Message
            Exit Sub
        End Try

        ' Запуск процесу збереження даних на клієнті
        Try
            Dim FileName As String
            If ddlTypeExport.SelectedValue = 0 Then
                Me.Response.ContentType = "application/msword"
            End If
            Me.Response.AddHeader("Content-Disposition", String.Format("attachment; filename=\" & FileName & "\"))
            Me.Response.OutputStream.Write(Doc, 0, CInt(l))
            Me.Response.End()
        Catch ex As Exception
            lblError.Text = ""
            lblError.Text = "Під час збереження виникла помилка!" & ex.Message
            Exit Sub
        End Try
    End Sub
... << RSDN@Home 1.2.0 alpha rev. 655>>
Тиха украинская ночь, но сало надо перепрятать!!!
Re[7]: Особенности бейсика
От: akasoft Россия  
Дата: 25.08.06 12:28
Оценка: 2 (1)
Здравствуйте, soljen, Вы писали:

S>
S>            lblError.Text = ""
S>            lblError.Text = "Помилка під час експорту звіту!" & ex.Message
S>


А вот это присваивание пустой строки — это бейсиковская заморочка, или почему 2 строчки, а не только последняя?

Вместо

S>
S>                Me.Response.ContentType = "application/msword"
S>


для pdf правильнее — "application/pdf", это позволит броузеру попытаться задействовать плагин либо стартовать Acrobat Reader для контента.

Например, тут есть немного на русском.
... << RSDN@Home 1.2.0 alpha rev. 655>> SQL Express 2005
Re[8]: Особенности бейсика
От: soljen Интернет  
Дата: 25.08.06 13:14
Оценка:
Доброго времени суток, akasoft!

S>>
S>>            lblError.Text = ""
S>>            lblError.Text = "Помилка під час експорту звіту!" & ex.Message
S>>

A>А вот это присваивание пустой строки — это бейсиковская заморочка, или почему 2 строчки, а не только последняя?

В данном случае достаточно только последней строчки, но в некоторых местах я складываю строчки из нескольких + сообщение об ошибке если есть — вот и понаписывал, типа перестраховался...


A>Вместо

S>>
S>>                Me.Response.ContentType = "application/msword"
S>>

A>для pdf правильнее — "application/pdf", это позволит броузеру попытаться задействовать плагин либо стартовать Acrobat Reader для контента.

A>Например, тут есть немного на русском.


Чудненькая статейка... искал её, но сам не нашёл...

Спасибо!
... << RSDN@Home 1.2.0 alpha rev. 655>>
Тиха украинская ночь, но сало надо перепрятать!!!
Re[3]: Как получить путь к папке Мои документы текущего поль
От: Skvop  
Дата: 07.12.07 16:56
Оценка:
Здравствуйте, vitz, Вы писали:
V>Папка "Мои документы" является частью локального пользовательского профиля. А твое приложение ASP.NET работает на сервере саааавсем под другой учетной записью и если использовать Environment то это будет Environment именно сервера с ASP.NET. Так что ты в корне не верно задал вопрос.
V>А по поводу сохранения файла: пиши в Response

V>
V>this.Response.ContentType = "image/JPG"; //MIME твоего файла (не обязательно "image/JPG"!!!)
V>this.Response.AddHeader("Content-Disposition",
V>                        string.Format("attachment; filename=\"{0}\"",Name));//ИМЯ ФАЙЛА
V>this.Response.OutputStream.Write(...)

V>

Скажите пожалуйста, а как в этом случае можно задать имя сохраняемого файла у клиента в окошке (открыть\сохранить\отмена)?
Пишу вордовский файл каждый раз с новым именем, а по умолчанию default.doc открывается в окошке.
Re[4]: Как получить путь к папке Мои документы текущего поль
От: Sinclair Россия https://github.com/evilguest/
Дата: 10.12.07 04:26
Оценка: 1 (1)
Здравствуйте, Skvop, Вы писали:
S>Скажите пожалуйста, а как в этом случае можно задать имя сохраняемого файла у клиента в окошке (открыть\сохранить\отмена)?
S>Пишу вордовский файл каждый раз с новым именем, а по умолчанию default.doc открывается в окошке.
Перечитай приведенный тебе пример кода, на этот раз внимательно.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.