문제

ASP : 파일 제어를 사용하여 사이트에 파일을 업로드하면 파일 이름 속성은 IE 및 Firefox에서 다릅니다. Firefox에서는 파일 이름 만 제공하지만 IE는 파일의 전체 경로를 제공합니다.

코드를 추가 하여이 문제를 해결했습니다.

Dim FileName As String = file.FileName
If FileName.LastIndexOf("\") > 0 Then
    FileName = FileName.Substring(FileName.LastIndexOf("\") + 1)
End If

그러나 왜 그것이 다른 브라우저간에 다른지 잘 모르겠습니다. 그 이유를 아는 사람이 있습니까?

감사.

도움이 되었습니까?

해결책

이것은 보안/개인 정보 보호 문제입니다. Firefox/Mozilla는 제대로하고 있으며 추가 기능, 애플릿, 실버 라이트, 플래시 또는 기타 메커니즘없이 전체 경로를 얻을 수있는 방법을 얻지 못할 것입니다.

모질라의 입장에 대한 자세한 정보는 다음과 같습니다.

https://developer.mozilla.org/en/updating_web_applications_for_firefox_3

섹션을 참조하십시오 보안 변경-> 파일 업로드 필드

IE가 일관되고 안전한 환경을 갖기 때문에 IE가 소송을 따르기를 바랍니다.

다른 팁

IE 및 Chrome에서 테스트 된이 테스트에 대한 간단한 해결 방법

new FileInfo(myHttpPostedFileBase.FileName).Name

이렇게하면 경로가 포함 된 경우에도 항상 파일 이름 만 얻을 수 있습니다.

IE8에서는이 동작이 변경되었으며 전체 경로가 아닌 파일 이름 만 전달합니다. ;-)

IE8의 변경 사항을 논의하는 IE 블로그 게시물에 대한 세부 사항 및 링크 :http://blogs.msdn.com/b/webtopics/archive/2009/07/27/uploading-a-file-using-fileupload-pails-in-ie8.aspx

서버 사이드 앱은 파일 이름을 구문 분석하려는 앱이 확인해야하지만 예상하다 파일 이름에는 백 슬래시가 있습니다.

IE8 사용자 설정 오버라이드 :http://blogs.msdn.com/blogfiles/webtopics/windowslivewriter/uploadingafileusingfileuploadcontrolfail_167/clip_image002_2.jpg

파일 이름 만 반환하는 PATH.GETFILENAME (FILE.FILENAME)을 사용할 수도 있습니다. 예시:

Dim File As HttpPostedFile = context.Request.Files("txtFile")
' let's FileName is "d:\temp\1.txt"
Dim FileName As String = Path.GetFileName(File.FileName)
' FileName will be "1.txt"
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top