使用 bash 脚本上传 BusyBox 文件 [POST]

BusyBox file upload [POST] with bash script

我有一个设备 运行 具有 hdmi 输出的限制版本的 busybox。我需要上传一张图片,以用作设备启动时的启动画面。厂家提供了tftp的方法,但是确实不行,他们也不太热心帮忙。

我有什么

我可以远程登录设备。没有文本编辑器,所以我正在创建这样的脚本:

echo "#!/bin/bash

(

while read -d '' line ; do

printf '%s\n' \"$line\"

done

) > /www/images/test.gif

echo 'Status: 204 No Content'

echo ;;

esac" > file.cgi

该脚本是 https://codereview.stackexchange.com/a/79626

的修改版本

该设备已经有一个 http 服务器 运行,我能够成功 POST 一个文件到脚本。文本文件 (txt,html) 上传正确,我可以通过设备网络界面查看它们。

然而,对于图像来说就不是这样了。上传完成,我可以查看文件的内容(cat image 生成 *PNG [二进制输出] *)。文件大小正确或接近预期大小。在 Web 浏览器中打开文件会生成损坏的图像,其中 Chrome 告诉我 Resource interpreted as Document but transferred with MIME type image/png: "http://169.254.3.163/test.png".

我是一个普通的 linux 用户,但这种类型的互动是我的弱点,所以任何帮助将不胜感激。

你所要做的就是从标准输入读取,假设你可以写入/www/images,这是cgi脚本:

#! /bin/sh

cat - > /www/images/test.gif
echo "

OK"