Загрузить файл в виртуальный каталог с его URL - PullRequest
0 голосов
/ 05 сентября 2018

Я пытаюсь загрузить файл .pdf в виртуальный каталог PDF_DIR с веб-сайта в ASP.NET.

Теперь я загружаю файл следующим образом (myFile в HttpPostedFile объекте):

myFile.SaveAs(Server.MapPath("..\PDF_DIR\") & "test.pdf")

На данный момент это работает, но политика безопасности изменится, и в будущем я не смогу использовать Server.MapPath (потому что он возвращает физический путь к каталогу, а пользователи веб-сайта не будут иметь прав на него. ).

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

Вот мои тесты для моей цели:

1 - FileStream.FileOpen (virtualPath)

Dim b As Byte()
Using br As New BinaryReader(myFile.InputStream)
    b = br.ReadBytes(myFile.ContentLength) // Convert Stream to Byte()
End Using
Dim fs As FileStream = File.Open("..\PDF_DIR\" & "test.pdf", FileMode.Create, FileAccess.ReadWrite)
fs.Write(b, 0, b.Length)
fs.Close()

Ошибка: невозможно найти часть пути C: \ windows \ system32 \ PDF_DIR \ test.pdf

2 - FileStream.FileOpen (server / virtualPath)

То же самое с 1 с "http://server/PDF_DIR/" вместо "..\PDF_DIR\"

Ошибка: URI не поддерживается в FileOpen

3 - WebClient с URI виртуального пути

Dim wc As System.Net.WebClient = New System.Net.WebClient()
wc.UploadFile(New URI("http://server/PDF_DIR/test.pdf"), ???)

Этот, я не знаю, что передать во втором параметре для моего примера, но с "blank.pdf" вместо ??? Я получаю ошибку Удаленный сервер возвращает ошибку: 401 Unauthorized, даже если пользователи сайта имеют права на запись в каталог ...

Кто-нибудь знает, возможно ли это и как этого достичь?

Спасибо за помощь,

* * Привет тысяча сорок-девять,

CLJ

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...