jameskm69 Ответов: 1

Asp.net загрузите pdf-файл на сервер


Привет у меня есть следующее:
Ответ.письменный запрос.Заголовки("X-File-Name"))

Dim input As Stream = DirectCast(Request.Потока, Поток)
Dim bmp как новое растровое изображение(input)

Ответ.Четкий()
Ответ.ContentType = "изображение/jpeg"

- Оставь это до ответа.Объект OutputStream
bmp.Save("C:\inetpub\wwwroot\mywerver\upload\" & запрос.Заголовки("X-File-Name") & ".jpg")

формат BMP.Располагать()

которые прекрасно работают для загрузки изображений, но если я хочу загрузить какое-то другое расширение, например PDF, то оно не будет работать.

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

Я попробовал : ответ.ContentType = "application/pdf" и
bmp.Save("C:\inetpub\wwwroot\mywerver\upload\" & запрос.Заголовки("X-File-Name") & ".pdf")
Но безрезультатно.
Спасибо за любую помощь
Джеймс

j snooze

Это публикуется на Вашей странице из элемента управления загрузкой файлов? Кроме того, это webforms или mvc?

jameskm69

Привет, Джей, это не от контроллера загрузки asp. это из javascript/AJAX:
если (файл) {
ВАР XHR-запрос = новый запрос XMLHttpRequest();
xhr.upload.addEventListener('progress', uploadProgress, false);
то XHR.внутренний = stateChange;
то XHR.открыть('сообщение', 'crop1.aspx-файл', правда);
xhr.setRequestHeader('X-FILE-NAME', file.name);
xhr.send(файл);
}
функция stateChange(событие) {

if (event.target.readyState == 4) {

if (event.target.status == 200 || event.target.status == 304 || event.target.status == 500 ) {
$('#dropZone').text('загрузка завершена!');
счетчик2 = счетчик2 + 1;
если (count2 == count) {
alert("вы загрузили" + count2 + " фото(ы) \n Нажмите кнопку "OK", чтобы продолжить");
}
}
еще {
dropZone.text("загрузка не удалась!");
dropZone.addClass('ошибка');
}
}
}
Примечание: crop1.aspx-это страница в виде WebRequest
Спасибо,
Джеймс

j snooze

Это может вам помочь.
https://stackoverflow.com/questions/2934295/c-sharp-save-a-file-from-a-http-request#2934308
он написан на c#, но вы должны быть в состоянии преобразовать его в VB

1 Ответов

Рейтинг:
5

A_Griffin

Это будет работать с любым типом файлов на сервере

Response.Write(Request.Headers("X-File-Name"))
            
Dim output As FileStream = File.Create(PathToFolderEndWithBackSlash & Request.Headers("X-File-Name"))
Dim input As Stream = DirectCast(Request.InputStream, Stream)
            
Dim buffer(input.Length - 1) As Byte
Dim bytesRead As Integer
               
Do
   bytesRead = input.Read(buffer, 0, buffer.Length)
   If bytesRead = 0 Then Exit Do
   output.Write(buffer, 0, bytesRead)
Loop

output.Close()
хотя я осмелюсь сказать, что вы захотите добавить ловлю ошибок и т. д.


A_Griffin

кстати, я обновил Do...Цикл для проверки состояния bytesRead = 0 перед записью - на самом деле он работает наоборот (имея его в поле До...), но все же ...

jameskm69

Отлично, Спасибо Гриффин. Это сработало