diff --git a/app/Http/Controllers/IndexController.php b/app/Http/Controllers/IndexController.php index d6020b77d..638218811 100755 --- a/app/Http/Controllers/IndexController.php +++ b/app/Http/Controllers/IndexController.php @@ -302,60 +302,78 @@ class IndexController extends InvokeController abort(404); } // - if (file_exists($file)) { - parse_str($data['query'], $query); - $name = Arr::get($query, 'name'); - $ext = strtolower(Arr::get($query, 'ext')); - $userAgent = strtolower(Request::server('HTTP_USER_AGENT')); - if ($ext === 'pdf') { - // 文件超过 10m 不支持在线预览,提示下载 - if (filesize($file) > 10 * 1024 * 1024) { - return view('download', [ - 'name' => $name, - 'size' => Base::readableBytes(filesize($file)), - 'url' => Base::fillUrl($path), - 'button' => Doo::translate('点击下载'), - ]); - } - // 浏览器类型 - $browser = 'none'; - if (str_contains($userAgent, 'chrome')) { - $browser = str_contains($userAgent, 'android') || str_contains($userAgent, 'harmonyos') ? 'android-mobile' : 'chrome-desktop'; - } elseif (str_contains($userAgent, 'safari') || str_contains($userAgent, 'iphone') || str_contains($userAgent, 'ipad')) { - $browser = str_contains($userAgent, 'iphone') || str_contains($userAgent, 'ipad') ? 'safari-mobile' : 'safari-desktop'; - } - // electron 直接在线预览查看 - if (str_contains($userAgent, 'electron') || str_contains($browser, 'desktop')) { - return Response::download($file, $name, [ - 'Content-Type' => 'application/pdf' - ], 'inline'); - } - // EEUI App 直接在线预览查看 - if (str_contains($userAgent, 'eeui') && Base::judgeClientVersion("0.34.47")) { - if ($browser === 'safari-mobile') { - $message = Base::array2json([ - 'type' => 'currentOpen', - 'url' => Base::fillUrl($path), - ]); - return ""; - } - } - } - // - if (in_array($ext, File::localExt)) { - $url = Base::fillUrl($path); - } else { - $url = 'http://' . env('APP_IPPR') . '.3/' . $path; - } - if ($ext !== 'pdf') { - $url = Base::urlAddparameter($url, [ - 'fullfilename' => $name . '.' . $ext + if (!file_exists($file)) { + abort(404); + } + // + parse_str($data['query'], $query); + $name = Arr::get($query, 'name'); + $ext = strtolower(Arr::get($query, 'ext')); + $userAgent = strtolower(Request::server('HTTP_USER_AGENT')); + if ($ext === 'pdf') { + // 文件超过 10m 不支持在线预览,提示下载 + if (filesize($file) > 10 * 1024 * 1024) { + return view('download', [ + 'name' => $name, + 'size' => Base::readableBytes(filesize($file)), + 'url' => Base::fillUrl($path), + 'button' => Doo::translate('点击下载'), ]); } - $toUrl = Base::fillUrl("fileview/onlinePreview?url=" . urlencode(base64_encode($url))); - return Redirect::to($toUrl, 301); + // 浏览器类型 + $browser = 'none'; + if (str_contains($userAgent, 'chrome')) { + $browser = str_contains($userAgent, 'android') || str_contains($userAgent, 'harmonyos') ? 'android-mobile' : 'chrome-desktop'; + } elseif (str_contains($userAgent, 'safari') || str_contains($userAgent, 'iphone') || str_contains($userAgent, 'ipad')) { + $browser = str_contains($userAgent, 'iphone') || str_contains($userAgent, 'ipad') ? 'safari-mobile' : 'safari-desktop'; + } + // electron 直接在线预览查看 + if (str_contains($userAgent, 'electron') || str_contains($browser, 'desktop')) { + return Response::download($file, $name, [ + 'Content-Type' => 'application/pdf' + ], 'inline'); + } + // EEUI App 直接在线预览查看 + if (str_contains($userAgent, 'eeui') && Base::judgeClientVersion("0.34.47")) { + if ($browser === 'safari-mobile') { + $redirectUrl = Base::fillUrl($path); + return << + let t = window.top + let \$A = null + while (t) { + if (t.\$A) { + \$A = t.\$A + break + } + t = t.top + } + if (\$A) { + \$A.eeuiAppSendMessage({ + action: 'setPageData', + data: { + titleFixed: true, + urlFixed: true, + } + }); + } + t.location.href = "{$redirectUrl}" + + EOF; + } + } } - abort(404); + // + if (in_array($ext, File::localExt)) { + $url = Base::fillUrl($path); + } else { + $url = 'http://' . env('APP_IPPR') . '.3/' . $path; + } + $url = Base::urlAddparameter($url, [ + 'fullfilename' => Base::rightDelete($name, '.' . $ext) . '_' . filemtime($file) . '.' . $ext + ]); + $redirectUrl = Base::fillUrl("fileview/onlinePreview?url=" . urlencode(base64_encode($url))); + return Redirect::to($redirectUrl, 301); } /** diff --git a/docker-compose.yml b/docker-compose.yml index 8add783d9..5ed82cae3 100755 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -104,7 +104,7 @@ services: fileview: container_name: "dootask-fileview-${APP_ID}" - image: "kuaifan/fileview:4.2.0-SNAPSHOT-RC22" + image: "kuaifan/fileview:4.2.0-SNAPSHOT-RC23" environment: KK_CONTEXT_PATH: "/fileview" KK_OFFICE_PREVIEW_SWITCH_DISABLED: true diff --git a/resources/assets/js/App.vue b/resources/assets/js/App.vue index 90f59e6e0..8bd9b550e 100755 --- a/resources/assets/js/App.vue +++ b/resources/assets/js/App.vue @@ -61,14 +61,12 @@ export default { mounted() { window.addEventListener('resize', this.windowSizeListener); window.addEventListener('scroll', this.windowScrollListener); - window.addEventListener('message', this.windowHandleMessage) this.searchInter = setInterval(this.searchEnter, 1000); }, beforeDestroy() { window.removeEventListener('resize', this.windowSizeListener); window.removeEventListener('scroll', this.windowScrollListener); - window.removeEventListener('message', this.windowHandleMessage) this.searchInter && clearInterval(this.searchInter); }, @@ -238,15 +236,6 @@ export default { this.$store.state.windowScrollY = window.scrollY }, - windowHandleMessage({data}) { - data = $A.jsonParse(data); - if (data.type === 'currentOpen') { - if ($A.getDomain(window.location.href) === $A.getDomain(data.url) || $A.getDomain($A.apiUrl('../')) === $A.getDomain(data.url)) { - window.location.href = data.url - } - } - }, - electronEvents() { if (!this.$Electron) { return; diff --git a/resources/mobile b/resources/mobile index a6ebc5ab0..cdbbf1f0e 160000 --- a/resources/mobile +++ b/resources/mobile @@ -1 +1 @@ -Subproject commit a6ebc5ab089fab50e95ae614487782b69566412e +Subproject commit cdbbf1f0e237d6b38713ed327d974177fcae9f85