PDF를 다운로드 없이 바로 열도록 기본 설정 변경

현재 PDF의 핵심 처리는 다운로드를 통해 이루어집니다:

allaboutcats.pdf (42.2 KB)

이 방식은 매우 기능적이지만, 가장 일반적인 사용 사례인 "지금 이걸 읽고 싶다"에 대해 몇 가지 불필요한 단계를 추가합니다. 특히 모바일 기기에서 그렇습니다.

무언가를 다운로드/저장해야 하는 필요성은 매우 부차적입니다. 때로는 필요하지만, 보통 사용자는 그냥 읽고 넘어가기를 원합니다.

Inline PDF Previews TC는 데스크톱에서 인라인 PDF를 서빙함으로써 이 문제를 해결하며, 이를 매우 우아하게 수행합니다. 그러나 다음 일반적인 상황들은 놓치고 있습니다:

  1. 모바일 기기에서의 PDF
  2. 여러 개의 PDF (시각적 혼란으로 인해)
  3. 전체 브라우저 탭에서 PDF 보기

참고로, PDF를 다운로드하는 다른 경로들이 있습니다. 링크를 직접(우클릭/컨텍스트 메뉴를 통해) 다운로드하거나, 이 TC가 서빙하는 브라우저 기반 PDF 뷰어 내에서 다운로드할 수 있습니다.

제안: 기본적으로 브라우저에서 PDF 열기

이 작은 조정으로 이 두 가지 상황을 훌륭하게 해결할 수 있으며, Discourse의 다른 링크에 대한 기본 동작에 단순히 맞출 수 있습니다. 따라서 제안된 변경 사항에 따라:

  1. 모바일의 PDF 링크는 일반적으로 동일한 브라우저 창에서 열립니다.
    • 탭 한 번으로 보기 가능
  2. 데스크톱의 PDF 링크(즉, 인라인 PDF 위)는 새 탭에서 열립니다.
    • 클릭 한 번으로 전체 탭 보기 가능
  3. 인라인 동작이 의도적으로 억제된 경우(링크 텍스트에 공백을 추가하여)
    • 클릭 한 번으로 보기 가능

이 내용을 이 PR에 정리했습니다:

4개의 좋아요

Can anyone of your team maybe have a look at this PR @david ?

I left some comments about the code itself on the PR

When I click this link, it opens the PDF in the browser. No download. Are you seeing something different?

I’m using Chrome on macOS. We’re not running this d-pdf-previews theme component on Meta.

2개의 좋아요

Here in meta.discourse.org, my link above opens in the same tab as this page (just like you describe). This is unchanged in safe-mode.

However, on three of my recently updated sites (with the TC disabled) it attempts a download. This is also the case with safe-mode. I’m not sure why that is. I can’t see any site settings that govern this at all.

Whatever the reason, my fork fixes it for my sites nicely!

This makes no sense to me!!

1개의 좋아요

I’m going to see if we can get this inconsistency fixed up in core. Will update here with progress.

2개의 좋아요

Any joy with this thusfar?

1개의 좋아요

We do have a work-in-progress. Hopefully will be able to land it in the next couple of weeks. It’s a little tricky because there are lots of different situations to verify (local uploads, s3, s3-compatible, with cdn, without cdn, etc).

4개의 좋아요

I just checked a PDF that I uploaded to a topic today on a recently updated site and clicking the pdf link opens the PDF url on the CDN in my browser, fwiw

2개의 좋아요

SECURITY: Download allowlist for uploaded files · discourse/discourse@9c0642a · GitHub 커밋 이후로 이 문제는 해결되었어야 합니다.

이제 '인라인’으로 표시될 파일을 결정하는 로직이 중앙 집중화되었습니다. 이를 통해 PDF 파일은 일관되게 인라인으로 표시되고, 안전하지 않은 일부 파일 유형은 일관되게 다운로드 파일로 제공됩니다. 이러한 변경 사항은 모든 유형의 업로드 저장소(로컬 및 S3, CDN 사용 여부와 관계없이)에서 작동해야 합니다.

5개의 좋아요

이 주제는 9일 후 자동으로 닫혔습니다. 더 이상 새 답변을 작성할 수 없습니다.

David, 방금 이 부분을 테스트해 봤는데 - 데스크톱에서는 확실히 수정된 것 같지만, 모바일에서는 그렇지 않은 것 같습니다.

모바일에서 PDF 링크를 클릭하면 다운로드가 시작되는데(이건 원치 않는 동작입니다). TC가 설치되어 있든 없든, 데스크톱과 동일하게 브라우저에서 바로 열리기를 원합니다.

설치 환경(S3? CDN?)과 모바일 기기 운영체제에 대해 좀 더 자세히 설명해 주실 수 있나요?

여기서 OP의 PDF를 iPhone으로 클릭해 보면 인라인으로 정상적으로 열립니다.

1개의 좋아요

mp4 파일은 어떻게 되나요? 대부분의 웹사이트에서는 mp4 링크를 클릭하면 브라우저에서 자연스럽게 재생되지만, 디스코urs에서는 그렇지 않아서 다소 번거롭습니다 :slight_smile:

예시: https://unicyclist.com/uploads/default/original/3X/4/f/4fb882b8ca5a0b0e3d75ff932506d57325f5582c.mp4

기대되는 동작: https://d.canapin.dev/uploads/default/original/2X/4/4fb882b8ca5a0b0e3d75ff932506d57325f5582c.mp4

이론적으로 mp4 파일은 인라인으로 서빙되어야 합니다:

이것은 다음을 사용합니다:

이것을 어떻게 구현하셨나요? 즉, unicyclist.com과의 차이점은 무엇인가요?

구분을 명확히 설명했어야 했는데 죄송합니다. 후자는 플러그인을 사용합니다: Discourse Video Inline

메타에서 디스코스는 mp4 다운로드를 강제합니다: https://global.discourse-cdn.com/meta/original/4X/3/f/0/3f09f895d21cf0ae897d90c947abb816830b00a2.mp4

2개의 좋아요

변경되었습니다!!! 오늘 다시 업데이트를 했는데, 모바일에서 인라인으로 정상적으로 열립니다.

저희 같은 '단순한 셀프 호스터(CDN/S3 없음)'를 위해 무언가를 조정하신 건가요? 아니면 단순한 캐싱 문제였나요?

위에서 링크한 보안 수정 이후로 변경 사항은 없습니다. 처음에 UI를 통해 업그레이드를 했다면 캐싱 문제였을 가능성이 특히 높습니다. 이제 완전한 재빌드를 수행했다면 NGINX 캐시가 초기화되었을 것입니다. 이제 정상 작동한다고 해서 기쁩니다!

mp4 문제에 대해 새 주제를 열었습니다

3개의 좋아요

이 주제는 3일 후 자동으로 닫혔습니다. 새로운 답변은 더 이상 허용되지 않습니다.