Я пытаюсь загрузить файл .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