Skip to content

局域网服务器

/api/upload/文件名 使用put请求即可上传文件,成功后会返回分享码(长分享码格式)
可添加参数add=false,上传过后不会自动添加到历史记录和收藏
/api/download/文件名(可选)?s=分享码 可直接下载或预览文件
可添加参数referer=强制覆盖分享码自带的referer
/api/file_info?s=分享码 查看文件信息

URI API(安卓版)

MixFile开放了许多uri api,可通过这些uri调用或启动mixfile的服务
uri可通过网页js(直接跳转href即可)或安卓intend启动
mixfile://start 可直接后台启动局域网服务器
网页点击mf://开头的分享码 可直接弹出文件信息窗口

自定义线路(Http)

需要自行使用其他编程语言开发一个http服务器接收put和get请求
get返回填充的图片(推荐小于10kb),put负责上传
地址填写http://服务器地址:端口
referer填写下载时的referer请求头(会编码到生成的分享码中)
可参考项目:
https://github.com/InvertGeek/mixfileexamplejs
需要安装nodejs,运行npm i 安装依赖后点击start.bat即可启动
本地运行填写例子: 地址填写http://局域网地址:端口 例如https://192.168.0.1:50001
referer填写https://weibo.com/
需要无压缩,如果图片被压缩数据会丢失
上传默认采用kotlin协程并发上传,默认并发10,也就是10个图片同时上传,如果遇到频率限制调低并发即可

自定义相应Headers

以下请求url param,可在下载文件时自定义返回对应的响应头
response-cache-control
response-content-disposition
response-content-encoding
response-content-language
response-content-type
response-expires
webdav存档文件(当前目录存档.mix_dav)只支持response-content-encoding设置

JS自定义线路

https://github.com/InvertGeek/mixfile-scripts
无需服务端即可运行,命令行配置填写js文件名称即可
支持部分es6语法

js
//使用print代替console.log
                
全局变量:
MAGE_DATA //加密后的图片base64
HEAD_SIZE //原图片大小
                
支持的函数列表:
 
atob(base64) //解码base64,返回字符串
                
btoa(字符串) //将字符串编码为base64
                
hash(算法,base64) //支持MD5 SHA256等算法
//例如: hash("MD5",btoa("123"))
                
appendBase64(base64,base64)
//拼接两串base64的二进制,返回base64
 
encodeUrl,decodeUrl,//url编码解码

print(a,b,c) //在控制台输出内容

request(方法,url,body,headers) //发送http请求
//返回{statusCode,text,rawData,headers} 数据
//rawData为base64格式响应体,text为纯文本
//body支持字符串,对象,数组
//对象会自动转为formData,
//对象中使用 [文件数据(base64),文件名,mime类型] 代表文件
//数组包裹base64为二进制格式请求体,格式为: [base64]

submitForm(url,formData,headers) //提交表单(已过时,推荐使用request)
//使用 [文件数据(base64),文件名,mime类型] 代表文件
//返回base64格式响应体
 
http(方法,url,body,headers) //发送http请求(已过时,推荐使用request)
//body需要为base64格式
//返回base64格式响应体

setReferer(字符串) //设置下载时的referer请求头
  
//全局内存缓存:
putCache(key,value,expire seconds) 
getCache(key)
//value只支持字符串,expire为-1永不过期
  
//全局互斥锁:
lock(key,func) //返回func执行结果
// 例如lock("abc",()=>1)
   
   
// 代码例子:
const cookie = `cookie value`;
const referer = "https://example.com/";
//设置下载时的referer
setReferer(referer);
//使用[]数组包裹base64代表二进制文件数据,格式为: [文件数据,文件名,mime类型]
const formData = {
     file: [IMAGE_DATA,"1.gif","image/gif"]  
};  
const headers = {
    referer,
    cookie,
};
const {text,statusCode} = request("POST","https://example.com/api/upload", formData, headers);

const data = JSON.parse(text);
const result = data.url.split('?')[0];
print("上传成功,图片地址: ",result)
//在最后一行填写图片地址表达式
result;

集成MixFileCore

如果你想在自己的应用内集成MixFile,可使用 https://github.com/InvertGeek/mixfile-core

其他

命令行自行打包的指令: ./gradlew shadowJar
推荐网站: https://curlconverter.com/node-axios/
可直接把curl转换为axios代码,浏览器中右键复制请求为curl即可