Safari에서 이미지를 업로드할 수 없습니다

저는 Safari를 v15.5로 업데이트했을 때부터 이 문제가 시작되었던 것이 아니라고 확실히 확인해 드릴 수 있습니다. 업데이트는 2022년 5월 18일에 이루어졌으며, 저는 2022년 6월 14일에야 처음 문제를 기록했습니다. 저는 Discourse 플랫폼 기반 포럼의 운영자로서 매일 최소 2~3개의 이미지를 업로드합니다. 해당 Discourse 호스팅 포럼의 업무 기록을 통해, Safari 업데이트 이후이지만 문제를 처음 인지하기 전에 이미 그래픽을 업로드했음을 입증할 수 있습니다.

2개의 좋아요

기록을 위해 말씀드리면, 방금 Safari v15.6으로 업데이트했습니다. 하지만 이 문제는 여전히 해결되지 않았습니다.

1개의 좋아요

네, 이 문제를 해결할 겁니다. 조금만 기다려 주세요. 이렇게 오래 걸려서 정말 죄송합니다.

이 문제를 기능 감지(feature detection)로 파악하는 것이 매우 어렵습니다. 현재 몇 가지 옵션이 있습니다.

  1. uploading ...라는 플레이스홀더 대신 …를 사용하도록 플레이스홀더를 교체합니다.

  2. 이 문제에 대해 대소문자 구분이 없는 “정규식” 치환을 사용합니다.

  3. 이 경우 텍스트 삽입 메커니즘으로 사용되는 execCommand를 비활성화합니다(어차피 이미지를 붙여넣으면 실행 취소 스택이 손상되므로 무의미합니다).

  4. execCommand 관련 기능을 사이트 설정 뒤에 두고 기본적으로 비활성화합니다.

또는 이 중 일부의 조합을 사용할 수도 있습니다.

David의 목록에 올라가 있으며, 추적하고 있습니다.

4개의 좋아요

(2)번이 가장 쉽게 적용할 수 있어, 당장은 이 방식을 선택했습니다. 만약 이 문제가 더 광범위하게 발생한다면, 3번 또는 4번과 같은 더 근본적인 변경 사항을 검토할 수 있습니다. PR은 다음과 같습니다:

7개의 좋아요

@tut 해당 수정 사항이 이제 Meta와 여러분의 사이트에 적용되었습니다. 한번 시도해 보시고, 상황이 나아졌는지 알려주시면 감사하겠습니다.

5개의 좋아요

문제가 해결된 것 같습니다. 방금 사파리 v15.6(인용이 아님)에 업로드한 이전 게시글의 스크린샷을 첨부합니다:

6개의 좋아요

Safari에서 이미지를 업로드할 때 발생하는 문제가 다시 발생했습니다. 증상은 https://meta.discourse.org/t/cannot-upload-images-with-safari/232563에 설명된 것과 정확히 동일하지만, 한 가지 예외가 있습니다. 이제 문제는 간헐적으로 발생합니다. 다음과 같은 사항을 관찰했습니다:

  • 전체 성공률은 약 90%로 추정됩니다.
  • 동일한 로그인 세션 내에서 다양한 형식의 다른 이미지들이 성공적으로 업로드된 직후에도 업로드가 중단되는 경우가 발생합니다.
  • 때로는 몇 번 시도한 후에 업로드가 성공하기도 합니다.
  • 어떤 이미지는 업로드되지 않으나, 다른 Discourse 게시물에서 유사한 그래픽 이미지(코드 자체가 아닌 이미지 자체)를 즉시 복사하여 붙여넣으면 새 게시물에 이미지가 나타나는 경우가 있습니다. (이 우회 방법은 실패한 적이 없지만, 실패한 적이 없다는 것은 영원히 실패하지 않을 것이라는 보장은 아닙니다.)
  • 때로는 특정 이미지는 업로드되지 않으나, 동일한 형식의 다른 이미지는 업로드되는 경우가 있습니다. 그러나 일반적으로 한 이미지가 업로드되지 않으면 다른 이미지들도 업로드되지 않으며, 다른 브라우저에서 게시물을 완료해야 하는 경우가 많습니다.
  • 주로 상대적으로 작은 이미지에서 이 문제를 발견했지만, 항상 그런 것은 아닙니다. 그러나 크기에 따른 임계값이 존재하는지 여부를 판단할 만큼 충분한 경험은 없습니다. 이 관찰은 우연일 수도 있습니다.
2개의 좋아요

다시 이런 플레이스홀더에 걸리는 건가요? 아니면 약간 다른 동작을 보이는 건가요?

브라우저 콘솔에 오류/경고가 있나요?

동작이 동일한 것 같습니다.

방금 콘솔을 확인했는데, 제가 아무런 조작도 하지 않았는데도 지워져 있었습니다 — 새 세션을 시작한 때문일까요? 같은 현상이 반복되면 콘솔 로그를 캡처하겠습니다.

1개의 좋아요

음, 거의 2주가 걸렸고 수백 번의 성공적인 업로드가 있었지만, 결국 문제가 다시 발생했습니다. 이번에는 두 번째 업로드 시도가 바로 성공했습니다. 개발자 콘솔 로그의 마지막 두 줄은 네트워크 연결이 문제의 원인이었음을 명확히 가리키는 것 같습니다:

[Warning] [PLUGIN discourse-adplugin] (vendor-3525a44c5f1c281745e16fd0c569078e0ad263d863a3e3d95fe3a8ca080d252b.br.js, line 4586)
"Deprecation notice: \"message-bus:main\" is deprecated, use \"service:message-bus\" instead (deprecated since Discourse 2.9.0.beta7) (removal in Discourse 3.0.0)"
[Warning] [PLUGIN discourse-cakeday] (vendor-3525a44c5f1c281745e16fd0c569078e0ad263d863a3e3d95fe3a8ca080d252b.br.js, line 4586)
"Deprecation notice: \"site-settings:main\" is deprecated, use \"service:site-settings\" instead (deprecated since Discourse 2.9.0.beta7) (removal in Discourse 3.0.0)"
[Warning] [PLUGIN discourse-canned-replies] (vendor-3525a44c5f1c281745e16fd0c569078e0ad263d863a3e3d95fe3a8ca080d252b.br.js, line 4586)
"Deprecation notice: \"current-user:main\" is deprecated, use \"service:current-user\" instead (deprecated since Discourse 2.9.0.beta7) (removal in Discourse 3.0.0)"
[Warning] [PLUGIN hosted-site] (vendor-3525a44c5f1c281745e16fd0c569078e0ad263d863a3e3d95fe3a8ca080d252b.br.js, line 4586)
"Deprecation notice: \"site:main\" is deprecated, use \"service:site\" instead (deprecated since Discourse 2.9.0.beta7) (removal in Discourse 3.0.0)"
[Error] Failed to load resource: The network connection was lost. (poll, line 0)
[Error] Failed to load resource: The Internet connection appears to be offline. (poll, line 0)

이 문제가 다른 증상으로 반복되지 않는 한, 해결된 것으로 간주해야 한다고 생각합니다. 다만, 첫 번째 수정 이후 발생한 문제들과 관련해 콘솔 로그에 유사한 오류가 표시되지 않은 점이 의아합니다.

5개의 좋아요