Gokulprasad05 Ответов: 1

Я не смог открыть pdf-файл с диска C. Я попробовал ниже кодирование


I could not able to open pdf file from c drive. I tried below coding


Что я уже пробовал:

Dim lsfilename как строка
Dim lsfilepath как строка
hdnfilepath.Значение = e.CommandArgument
Дим размещения как String = "в<данные объекта=""{0}"" типа=""применение/формате PDF"" ширина=""500 пикселей"" высота=""600 пикселей""&ГТ;"
embed + = " </object>"

objdbconn.OpenConn()
в MSSQL = "выбрать document_gid,путь к файлу имя_файла от dap_trn_tdocuments где document_gid='" &амп; hdnfilepath.Значение &"'"
objOdbcDataReader = objdbconn.GetDataReader(в MSSQL)
Если objOdbcDataReader.HasRows = True Тогда
objOdbcDataReader.Читать()
lsfilename = objOdbcDataReader.Элемент ("имя файла").Метод toString
lsfilepath = objOdbcDataReader.Пункт("путь_к_файлу").Метод toString
Конец, Если
- лтембед.Текст = "в<данные объекта=""с:" &амп; lsfilepath &ампер; """ типа=""применение/формате PDF"" ширина=""500 пикселей"" высота=""600 пикселей""&ГТ;&ЛТ;/объект&ГТ;"
'СУБД MSSQL =" выбрать * из tblfiles где ID='" &амп; ИД &ампер; "' "
лтембед.текстовая строка.Формат(добавьте, ResolveUrl("с:" &амп; lsfilepath усилителя; ""))
objdbconn.CloseConn()

Мой путь в <данные объекта="C:/erp_documents/local/daily процесс/uploaddocuments/2016/6/UPLF1606230135.формат PDF" тип="применение/формате PDF" ширина="500px-это" высота="600 пикселей"&ГТ;&ЛТ;/объект&ГТ;

Gokulprasad05

Процесс."Пуск" ("процесс C:/erp_documents/local/daily /uploaddocuments/2016/6/UPLF1606230135.формат PDF")

1 Ответов

Рейтинг:
0

OriginalGriff

Это очень похоже на веб - сайт- так что это не сработает:

Process.Start("C:/erp_documents/local/daily process/uploaddocuments/2016/6/UPLF1606230135.pdf")
Это может показаться в разработке, но не в производстве.
Код C# всегда выполняется на сервере, а не на клиенте, и имеет доступ только к дискам сервера, но никогда к жесткому диску клиента. Таким образом, в зависимости от того, где вы храните PDF-файл, это может быть вообще невозможно.
Потому что Process.Start код выполняется на сервере, процесс запускается на сервере-поэтому он пытается использовать системную ассоциацию файлов по умолчанию, чтобы открыть файл и отобразить его на сервере - клиент не может его увидеть. Похоже, это работает в разработке, потому что они-одна и та же машина, и вы не можете сказать, кто начал процесс. Но в производстве он терпит неудачу.
Вторая проблема заключается в том, что даже если файл находится на сервере, ваш веб-сайт может не иметь доступа к папке, содержащей его: IIS не запускается под вашим идентификатором пользователя, поэтому он не "наследует" ваши права доступа пользователя. Вам нужно проверить цепочку папок и убедиться, что были даны правильные привилегии.

Вы можете отобразить PDF-файл на клиенте (в зависимости от клиента и того, какой браузер он использует, некоторые могут рассматривать его как загрузку, а не страницу) с помощью объекта Response:
Response.ClearHeaders();
Response.ContentType = "application/pdf"
Response.Clear()
Response.AppendHeader("Content-Disposition", "inline")
Response.TransmitFile(pathToFile)
Response.End()


Gokulprasad05

Сэр, спасибо за ответ. Моя потребность заключается только в том, что я хочу просмотреть pdf-файл, а не скачивать его.

OriginalGriff

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