npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@etsuyou/upload-image

v2.0.3

Published

A module helping upload images to ImgTP and return the urls back to you.

Downloads

1

Readme

@etsuyou/upload-image 模块用法示例

  • 版本:v2.0.3
  • 更新时间:2024/05/24
  • 模块作用:通过调用本模块提供的函数方法,可以在浏览器或 Node.js 环境中向默认图床服务器上传图片,并得到该服务器返回的可供公网访问的图片地址。

目录

快速安装

在使用该模块之前,请确保安装了本模块:

npm install @etsuyou/upload-image

安装本模块时会附带安装本模块所需要的所有依赖。

依赖作用

  • axios: 用于发送 HTTP 请求。
  • form-data: 用于构建表单数据。
  • fs: 用于文件系统操作(仅在 Node.js 环境中使用)。

引入方式

CommonJS

如果你使用的是 CommonJS 模块系统,可以这样引入:

const { uploadImage } = require("@etsuyou/upload-image");

ESM

如果你使用的是 ES6 模块系统,可以这样引入:

import { uploadImage } from "@etsuyou/upload-image";

使用示例

Vue 3(浏览器)

Vue 3 组合式

<template>
  <div>
    <!-- 文件输入框,当文件选择改变时触发 changeHandler 方法 -->
    <input type="file" name="file_name" id="file_id" @change="changeHandler" />
  </div>
</template>

<script setup>
  import { uploadImage } from "@etsuyou/upload-image"; // 导入上传图片的函数

  /**
   * 处理文件选择更改事件
   *
   * @param {Event} event - 文件选择事件
   */
  async function changeHandler(event) {
    // 获取用户选择的第一个文件
    const file = event.target.files[0];
    if (!file) return; // 如果没有选择文件,直接返回

    try {
      // 调用 uploadImage 函数上传文件,并等待上传结果
      const res = await uploadImage(file);
      console.log(res); // 成功时输出上传结果
    } catch (error) {
      console.error(error); // 失败时输出错误信息
    }
  }
</script>

Vue 3 选项式

<template>
  <div>
    <!-- 文件输入框,当文件选择改变时触发 changeHandler 方法 -->
    <input type="file" name="file_name" id="file_id" @change="changeHandler" />
  </div>
</template>

<script>
  import { uploadImage } from "@etsuyou/upload-image"; // 导入上传图片的函数

  export default {
    methods: {
      /**
       * 处理文件选择更改事件
       *
       * @param {Event} event - 文件选择事件
       */
      async changeHandler(event) {
        // 获取用户选择的第一个文件
        const file = event.target.files[0];
        if (!file) return; // 如果没有选择文件,直接返回

        try {
          // 调用 uploadImage 函数上传文件,并等待上传结果
          const res = await uploadImage(file);
          console.log(res); // 成功时输出上传结果
        } catch (error) {
          console.error(error); // 失败时输出错误信息
        }
      },
    },
  };
</script>

then 的写法

通过 then 方法处理异步操作:

Node.js 环境

const { uploadImage } = require("@etsuyou/upload-image");

const imagePath = "C:/Users/etsuyou/Desktop/image.jpg";

uploadImage(imagePath)
  .then((data) => {
    console.log(data); // 成功时输出上传结果
  })
  .catch((error) => {
    console.error(error); // 失败时输出错误信息
  });

JS

Axios

const axios = require("axios");
const FormData = require("form-data");
const fs = require("fs");
let data = new FormData();
data.append(
  "image",
  fs.createReadStream("/C:/Users/etsuyou/Desktop/image.jpg")
);

let config = {
  method: "post",
  maxBodyLength: Infinity,
  url: "https://imgtp.com/api/upload",
  headers: {
    ...data.getHeaders(),
  },
  data: data,
};

axios
  .request(config)
  .then((response) => {
    console.log(JSON.stringify(response.data));
  })
  .catch((error) => {
    console.log(error);
  });

Request

var request = require("request");
var fs = require("fs");
var options = {
  method: "POST",
  url: "https://imgtp.com/api/upload",
  headers: {},
  formData: {
    image: {
      value: fs.createReadStream("/C:/Users/etsuyou/Desktop/image.jpg"),
      options: {
        filename: "/C:/Users/etsuyou/Desktop/image.jpg",
        contentType: null,
      },
    },
  },
};
request(options, function (error, response) {
  if (error) throw new Error(error);
  console.log(response.body);
});

jQuery

var form = new FormData();
form.append("image", fileInput.files[0], "/C:/Users/etsuyou/Desktop/image.jpg");

var settings = {
  url: "https://imgtp.com/api/upload",
  method: "POST",
  timeout: 0,
  processData: false,
  mimeType: "multipart/form-data",
  contentType: false,
  data: form,
};

$.ajax(settings).done(function (response) {
  console.log(response);
});

Fetch

const formdata = new FormData();
formdata.append(
  "image",
  fileInput.files[0],
  "/C:/Users/etsuyou/Desktop/image.jpg"
);

const requestOptions = {
  method: "POST",
  body: formdata,
  redirect: "follow",
};

fetch("https://imgtp.com/api/upload", requestOptions)
  .then((response) => response.text())
  .then((result) => console.log(result))
  .catch((error) => console.error(error));

函数说明

uploadImage(imagePath: string | File, uploadUrl?: string): Promise<any>

该函数用于将本地图片上传到指定的 URL,默认上传到 ImgTP。

参数

  • imagePath (string | File): 本地图片路径(在 Node.js 中)或浏览器文件对象(在浏览器中)。
  • uploadUrl (string, 可选): 上传接口的 URL,默认为 "https://imgtp.com/api/upload"。

返回值

  • Promise<any>: 包含上传结果的 Promise,解析后为上传的响应数据。

示例

import { uploadImage } from "@etsuyou/upload-image";

const imagePath = "C:/Users/etsuyou/Desktop/image.jpg";

// 使用 then 方法
uploadImage(imagePath)
  .then((data) => console.log(data))
  .catch((error) => console.error(error));

// 使用 async/await
(async () => {
  try {
    const data = await uploadImage(imagePath);
    console.log(data);
  } catch (error) {
    console.error(error);
  }
})();