Это четвертая статья fly, посвященная использованию fly в мини-программах WeChat. Прежде чем читать эту статью, если вы еще не знаете fly. Сначала прочтите первые две статьи:
Первая статья: Оптимальное решение JS HTTP-запроса — fly.js
Часть 2: Fly против axios
Часть 3. Использование Fly для инициирования http-запросов в апплете WeChatфлай гибхаб адрес:github.com/wendux/fly
Fly поддерживает как среду браузера, так и среду узла. В узле, поскольку нет ограничений песочницы браузера, он имеет возможность доступа к файловой системе. По этой причине fly имеет специально улучшенные функции для узла, в основном добавляя загрузку и загрузку файлов. , Удобный метод.
API-интерфейсы, перечисленные в этом документе, поддерживаются адаптером узла, который поставляется с Fly по умолчанию.Если вы используете адаптеры, реализованные другими сторонними организациями, корректная работа этих API-интерфейсов не гарантируется.
Используемый адаптер узлаrequestБиблиотека, спасибо автору.
загрузка документа
download (url, savePath, params = null, options={})
url — адрес загрузки, savePath — путь для сохранения файла после успешной загрузки, params — параметр запроса, значение по умолчанию — null. вернутьPromise
объект, простой пример выглядит следующим образом:
var fly=require("flyio")
var log=console.log
//文件下载
fly.download("http://localhost:8089/static/v.png", "./v.png")
.then(d => {
log(d.size)
})
.catch(log)
Загрузите изображение и сохраните его в текущей папке. После успеха структура данных, полученная к тому времени, будет следующей:
{
size:3000,//文件大小,单位字节
path:"/user/wendux/xx/v.png" //下载文件保存在本地的绝对路径
}
options
options — это конфигурация запроса, вы можете установить собственные заголовки и т. д. Подробнее см.запросить конфигурацию.
Нижний слой
Принцип загрузки файла Fly заключается в выборе опцииresponseType
Установите «поток», тогда fly будет передавать поток ответа на верхний уровень при получении данных, а затем читать и сохранять его, поэтому мы также можем добиться того же эффекта следующим образом:
fly.get("http://localhost:8089/static/v.png",null,{responseType:"stream"})
.then(d=>{
//d.data为buffer对象
fs.writeFile("v.png", d.data,(err)=>{
//错误处理
})
})
Файл загружен
upload(url,formData,options={})
formData — это объект, и браузерFormData
сходство. Он может включать как обычные поля, так и файлы.
var fly=require("flyio")
//上传单个文件
var formData = {
file: fs.createReadStream('./v.png'), //文件
}
fly.upload("http://localhost/upload", formData)
.then(log).catch(log)
//可以包括多个字段/文件
var formData = {
name:"v.png", //普通的字段
avatar: fs.createReadStream('./v.png'), //文件
resume: fs.createReadStream('./resume.docx'), //文件
attachments:[ //可以通过数组
fs.createReadStream('./file1.zip'),
fs.createReadStream('./file2.zip')
]
}
fly.upload("http://localhost/upload", formData)
.then(log).catch(log)
загрузка будет запрашиватьсяcontent-type
Установите "multipart/form-data".
⚠️ Большинство http-серверов имеют ограничение на размер загружаемых файлов в одном запросе, и не рекомендуется загружать несколько файлов в одном запросе.
options
options — это конфигурация запроса, вы можете установить собственные заголовки и т. д. Подробнее см.запросить конфигурацию.
$http
Преимущество использования Fly заключается в том, что он инкапсулирует библиотеку запросов и предоставляет те же возможности на стороне браузера.Promise
интерфейс. Если вы хотите напрямую использовать собственный API библиотеки запросов, вы можете передатьfly.$http
Звоните напрямую,$http
Это объект запроса, например:
//Stream
fly.$http('http://google.com/doodle.png')
.pipe(fs.createWriteStream('doodle.png'))
//post请求
fly.$http.post('http://service.com/upload', {form:{key:'value'}})
Пожалуйста, перейдите к подробной документацииGithub request.
Создать новый экземпляр
При создании нового экземпляра в Node вам нужно ссылаться на негоsrc/node/index.js
:
var Fly= require("./src/node")
var newFly=new Fly;
наконец
Опубликуйте адрес fly github еще раз, если он вам нравится, добро пожаловать в звездочку, чтобы больше людей узнали о fly, спасибо за вашу поддержку:github.com/wendux/fly