[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[问题求助] 怎样把onedrive图片转成直链

下面的链接, 不能显示为直链, 只能打开看
https://1drv.ms/i/s!AsAORG4njDqphF4zFjO3nN173Kc7

用下面的网站转换后就行了, 有知道是什么原理吗? 我看就是加了前缀
https://onw.cc/onedrive.html

响应头
content-disposition: attachment
attachment为附件下载 inline为在线浏览

TOP

回复 2# went


    多谢大佬,
不明白意思, 怎样不用那个转换网站, 自己生成直链接呢

TOP

你需要自己搞个服务器

TOP

本帖最后由 小白龙 于 2024-12-17 21:10 编辑

回复 4# went


设置好后就可以像下面这样加个?type=attachment参数就行了?  实在太酷了,   请问大佬怎样设置服务器? 能给指个明路吗? 发现这太有用了
http://test.test.com/onedrive.ps1?type=attachment

TOP

这是我自己的服务器定义了type参数
你要用可以参考http://www.bathome.net/thread-57431-1-1.html
onedrive的服务器没有这种写法

TOP

本帖最后由 小白龙 于 2024-12-17 23:02 编辑

回复 6# went


  感谢大佬分享, 但是完全看不懂代码, 不知如何实现,
我在国外找到了下面的powershell代码, 只有二十来行代码, 就实现了一个简单的http服务器功能, 还能显示图片和网页, 太震撼了,
大佬能把上面提到type参数功能加到这里面吗?
  1. cls
  2. $listener = New-Object System.Net.HttpListener
  3. $listener.Prefixes.Add("http://localhost:8080/") # Create an HTTP listener
  4. $webRoot = $PSScriptRoot # Specify the website root directory
  5. $listener.Start() # Start the listener
  6. Write-Host "HTTP server is running at http://localhost:8080/"
  7. start http://localhost:8080/
  8. while ($true) {
  9.     try {        
  10.         $context = $listener.GetContext() # Wait for a request
  11.         
  12.         # Get the request and response objects
  13.         $request = $context.Request
  14.         $response = $context.Response
  15.         
  16.         # Get the file path, default to returning index.html
  17.         $requestedFile = if ($request.Url.AbsolutePath.Substring(1) -eq "") { "index.html" } else { $request.Url.AbsolutePath.Substring(1) }
  18.         $filePath = Join-Path $webRoot $requestedFile
  19.         
  20.         if (Test-Path $filePath) {
  21.             # Determine the file type and set the response
  22.             if ($filePath.EndsWith(".html")) {
  23.                 $fileContent = Get-Content $filePath -Raw
  24.                 $fileBytes = [System.Text.Encoding]::UTF8.GetBytes($fileContent)
  25.                 $response.ContentType = "text/html"
  26.             } elseif ($filePath.EndsWith(".png")) {
  27.                 $fileBytes = [System.IO.File]::ReadAllBytes($filePath)
  28.                 $response.ContentType = "image/png"
  29.             }           
  30.             $response.StatusCode = 200 # Send the file content
  31.             $response.OutputStream.Write($fileBytes, 0, $fileBytes.Length)
  32.         } else {            
  33.             $response.StatusCode = 404 # Return a 404 error
  34.             $response.StatusDescription = "Not Found"
  35.             $errorBytes = [System.Text.Encoding]::UTF8.GetBytes("404 - File Not Found")
  36.             $response.OutputStream.Write($errorBytes, 0, $errorBytes.Length)
  37.         }
  38.     } catch {      
  39.         $response.StatusCode = 500 # Handle exceptions
  40.         $response.StatusDescription = "Internal Server Error"
  41.     } finally {      
  42.         $response.OutputStream.Close() # Close the response stream
  43.     }
  44. }
  45. $listener.Stop() # Stop the listener
复制代码
index.html页面代码
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6.     <title>Welcome to My PowerShell Server</title>
  7.     <style>
  8.         body {
  9.             font-family: Arial, sans-serif;
  10.             background-color: #f0f0f0;
  11.             color: #333;
  12.             margin: 0;
  13.             padding: 0;
  14.             display: flex;
  15.             justify-content: center;
  16.             align-items: center;
  17.             height: 100vh;
  18.             flex-direction: column; /* 垂直布局 */
  19.         }
  20.         .container {
  21.             text-align: center;
  22.             background-color: white;
  23.             padding: 30px;
  24.             border-radius: 8px;
  25.             box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
  26.             margin-bottom: 20px; /* 添加底部间距 */
  27.         }
  28.         h1 {
  29.             color: #007BFF;
  30.         }
  31.         p {
  32.             font-size: 18px;
  33.         }
  34.         a {
  35.             color: #007BFF;
  36.             text-decoration: none;
  37.         }
  38.         a:hover {
  39.             text-decoration: underline;
  40.         }
  41.         .image-container {
  42.             text-align: center;
  43.             margin-top: 20px; /* 增加上边距 */
  44.         }
  45.         .image-container img {
  46.             width: 200px; /* You can adjust the size as needed */
  47.             height: auto;
  48.             border-radius: 8px;
  49.         }
  50.     </style>
  51. </head>
  52. <body>
  53. <div class="container">
  54.     <h1>Welcome to My PowerShell HTTP Server!</h1>
  55.     <p>This is a simple web page served by a PowerShell script.</p>
  56. </div>
  57. <div class="image-container">
  58.     <img src="Pic.png" alt="Picture">
  59. </div>
  60. </body>
  61. </html>
复制代码

TOP

这个插入到23行
  1. $request.Url.AbsolutePath
  2. $type=$request.QueryString.Get('type')
  3.         if($type -ne $null -and 'attachment' -eq $type.ToLower()){
  4.             $response.AddHeader('Content-Disposition','attachment')
  5.         }
复制代码
http://localhost:8080/index.html
http://localhost:8080/index.html?type=attachment

TOP

回复 8# went


    大佬高手, 确实可以了
如果把下面的所有功能用powershell实现, 感觉是不是相对要简单一些? 如果真能实现, 那就让人对powershell刮目相看了
http://www.bathome.net/thread-57431-1-1.html

TOP

回复 9# 小白龙


    没必要 太复杂了 你看源码就知道

TOP

返回列表