Такое дело: хочу чтоб отчёт сохранялся только в папку "Мои документы" текущего пользователя! Название отчёта будет задаваться отдёльно.
Подскажите как обратиться к этой системной папке? Кажется что-то Environment.что-то-то... но точно не знаю...
И не будет ли проблем если эти папаки лежат на серваке, т.е. если зайти в папку — то оказывается \\Server\....\UserMane\MyDocuments ?
Спасибо!
... << RSDN@Home 1.2.0 alpha rev. 655>>
Тиха украинская ночь, но сало надо перепрятать!!!
Как получить путь к папке Мои документы текущего пользовател
Доброго времени суток, Pred!
P>Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
Спасибо конечно, но я не полностью получается сформулировал вопрос!
В общем работаю с ASP.NET на VB.NET.
У меня ругается на выделенное! Нету такого...
А вызвать окно "Сохранить как..." можно только для WinForms.
Вот отсюда и вопрос, как мне "взять" путь к папке мои документы? Дальше я буду StringBuilder-ом собирать название документа, строить полный путь так сказать — и записывать туда отчётик...
Спасибо!
Тиха украинская ночь, но сало надо перепрятать!!!
Re[2]: Как получить путь к папке Мои документы текущего поль
Hello, "soljen"
> Вот отсюда и вопрос, как мне "взять" путь к папке мои документы? Дальше я > буду StringBuilder-ом собирать название документа, строить полный путь так > сказать — и записывать туда отчётик... >
Полные пути лучше строить через Path.Combine
Posted via RSDN NNTP Server 2.0
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[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]: Как получить путь к папке Мои документы текущего поль
Доброго времени суток, TK!
TK>Полные пути лучше строить через Path.Combine
Спасибо!
Ознакомлюсь, интересно...
Но всё равно мне надо опираться на Мои документы... у пользователей больше никуда нет доступа чтоб их (свои документы) сохранять...
Тиха украинская ночь, но сало надо перепрятать!!!
Re[3]: Как получить путь к папке Мои документы текущего поль
Доброго времени суток, 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]: Как получить путь к папке Мои документы текущего поль
Здравствуйте, 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]: Как получить путь к папке Мои документы текущего поль
Доброго времени суток, 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]: Как получить путь к папке Мои документы текущего поль
Доброго времени суток, 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 WordCase 1
pathFR = ".pdf"' PortableDocFormatEnd 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
S>> lblError.Text = ""
S>> lblError.Text = "Помилка під час експорту звіту!" & ex.Message
S>>
A>А вот это присваивание пустой строки — это бейсиковская заморочка, или почему 2 строчки, а не только последняя?
В данном случае достаточно только последней строчки, но в некоторых местах я складываю строчки из нескольких + сообщение об ошибке если есть — вот и понаписывал, типа перестраховался...
A>для pdf правильнее — "application/pdf", это позволит броузеру попытаться задействовать плагин либо стартовать Acrobat Reader для контента.
A>Например, тут есть немного на русском.
Чудненькая статейка... искал её, но сам не нашёл...
Спасибо!
... << RSDN@Home 1.2.0 alpha rev. 655>>
Тиха украинская ночь, но сало надо перепрятать!!!
Re[3]: Как получить путь к папке Мои документы текущего поль
Здравствуйте, 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]: Как получить путь к папке Мои документы текущего поль
Здравствуйте, Skvop, Вы писали: S>Скажите пожалуйста, а как в этом случае можно задать имя сохраняемого файла у клиента в окошке (открыть\сохранить\отмена)? S>Пишу вордовский файл каждый раз с новым именем, а по умолчанию default.doc открывается в окошке.
Перечитай приведенный тебе пример кода, на этот раз внимательно.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.