后浪云Moralis教程:Moralis 文件

创建 Moralis.File

Moralis.File​ 允许您将应用程序文件存储在云中,否则这些文件会太大或太笨重而无法放入常规的 ​Moralis.Object​。 最常见的用例是存储图像,但您也可以将其用于文档、视频、音乐和任何其他二进制数据。

Moralis.File​ 入门很容易。 有几种方法可以创建文件。 第一个是使用 base64 编码的字符串:

你可以使用​JS​、​React​来实现

const base64 = "V29ya2luZyBhdCBQYXJzZSBpcyBncmVhdCE=";
const file = new Moralis.File("myfile.txt", { base64: base64 });
const { saveFile } = useMoralisFile();

const uploadFile = () => {
  const base64 = "V29ya2luZyBhdCBQYXJzZSBpcyBncmVhdCE=";
  saveFile(
    "myfile.txt",
    { base64 },
    {
      type: "base64",
      onSuccess: (result) => console.log(result),
      onError: (error) => console.log(error),
    }
  );
};

或者,您可以从字节值数组创建文件:

const bytes = [0xbe, 0xef, 0xca, 0xfe];
const file = new Moralis.File("myfile.txt", bytes);

Moralis 将根据文件扩展名自动检测您上传的文件类型,但您可以使用第三个参数指定 Content-Type:

const file = new Moralis.File("myfile.zzz", fileData, "image/png");

在浏览器中

在浏览器中,您需要使用带有文件上传控件的 HTML 表单。 为此,请创建一个文件输入标签,允许用户从本地驱动器中选择要上传的文件:

<input type="file" id="profilePhotoFileUpload" />

然后,在点击处理程序或其他函数中,获取对该文件的引用(你可以使用​JS​、​React​来实现):

const fileUploadControl = $("#profilePhotoFileUpload")[0];
if (fileUploadControl.files.length > 0) {
  const file = fileUploadControl.files[0];
  const name = "photo.jpg";

  const moralisFile = new Moralis.File(name, file);
}
import { useState } from "react";
import { useMoralisFile } from "react-moralis";

function App() {
  const [fileTarget, setFileTarget] = useState("");
  const { saveFile } = useMoralisFile();

  const uploadFile = () => {
    saveFile("photo.jpg", fileTarget, {
      type: "image/png",
      onSuccess: (result) => console.log(result),
      onError: (error) => console.log(error),
    });
  };

  const fileInput = (e) => setFileTarget(e.target.files[0]);

  return (
    <div>
      <input type="file" onChange={fileInput} />
      <button onClick={uploadFile}>Call The Code</button>
    </div>
  );
}

export default App;

请注意,在此示例中,我们为文件命名为 ​photo.jpg​。 这里有两点需要注意:

  • 您无需担心文件名冲突。 每次上传都有一个唯一的标识符,因此上传多个名为 ​photo.jpg​ 的文件没有问题。
  • 为具有文件扩展名的文件命名很重要。 这让 Moralis 可以找出文件类型并相应地处理它。 因此,如果您要存储 PNG 图像,请确保您的文件名以 ​.png​ 结尾。

接下来,您需要将文件保存到云端。 与 ​Moralis.Object​ 一样,您可以使用多种保存方法的变体,具体取决于适合您的回调和错误处理类型。

moralisFile.save().then(
  function () {
    // The file has been saved to Moralis.
  },
  function (error) {
    // The file either could not be read, or could not be saved to Moralis.
  }
);

在 Node.js 中

在 NodeJs 中,您可以获取图像或其他文件并将它们存储为 ​Morales.File​:

const Moralis = require("moralis/node");
const request = require("request-promise");

const options = {
  uri: "https://bit.ly/2zD8fgm",
  resolveWithFullResponse: true,
  encoding: null, // <-- this is important for binary data like images.
};

request(options)
  .then((response) => {
    const data = Array.from(Buffer.from(response.body, "binary"));
    const contentType = response.headers["content-type"];
    const file = new Moralis.File("logo", data, contentType);
    return file.save();
  })
  .then((file) => console.log(file.url()))
  .catch(console.error);

在对象中

最后,在保存完成后,您可以将 ​Moralis.File​ 与 ​Moralis.Object​ 关联起来,就像任何其他数据一样:

const jobApplication = new Moralis.Object("JobApplication");
jobApplication.set("applicantName", "Joe Smith");
jobApplication.set("applicantResumeFile", moralisFile);
jobApplication.save();

如果您在云代码中保存文件,则必须在保存对象时提供 ​MasterKey​。 例子:

jobApplication.save(null, { useMasterKey: true });

检索文件内容

如何最好地检索文件内容取决于您的应用程序的上下文。 由于跨域请求问题,最好让浏览器为您完成工作。 通常,这意味着将文件的 URL 渲染到 DOM 中。 在这里,我们使用 jQuery 在页面上渲染上传的个人资料照片:

const profilePhoto = profile.get("photoFile");
$("profileImg")[0].src = profilePhoto.url();

如果您想在云代码中处理文件的数据,您可以使用我们的 HTTP 网络库检索该文件:

Moralis.Cloud.httpRequest({ url: profilePhoto.url() }).then(function (
  response
) {
  // The file contents are in response.buffer.
});

删除文件

您可以使用 ​destroy ​方法删除对象引用的文件。 删除文件需要主密钥:

const profilePhoto = profile.get("photoFile");
await profilePhoto.destroy({ useMasterKey: true });

添加元数据和标签

向文件添加元数据和标签允许您向存储在存储解决方案(即 AWS S3)中的文件添加额外的数据位。

注意:并非所有存储适配器都支持元数据和标签。 检查您正在使用的存储适配器的文档以了解兼容性。

你可以使用​JS​、​React​来实现

// Init with metadata and tags
const metadata = { createdById: "some-user-id" };
const tags = { groupId: "some-group-id" };
const file = new Moralis.File(
  "myfile.zzz",
  fileData,
  "image/png",
  metadata,
  tags
);

// Add metadata and tags
const file = new Moralis.File("myfile.zzz", fileData, "image/png");
file.addMetadata("createdById", "some-user-id");
file.addTag("groupId", "some-group-id");
const metadata = { createdById: "some-user-id" };
const tags = { groupId: "some-group-id" };
saveFile(
  "myfile.png",
  { fileData },
  {
    type: "image/png",
    metadata,
    tags,
    onSuccess: (result) => console.log(result.ipfs()),
    onError: (error) => console.log(error),
  }
);

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/289802.html<

(0)
管理的头像管理
上一篇2025-05-16 23:13
下一篇 2025-05-16 23:14

相关推荐

  • 站群服务器如何批量管理更高效,有哪些管理技巧?

    站群服务器批量管理想提效,自动化是唯一出路,通过统一配置管理工具与面板系统,结合服务商提供的底层基础设施支持,能将运维效率提升数倍,批量管理的核心痛点与解决思路多台站群服务器分散管理,最常见的问题就是重复劳动,每次软件更新、配置修改、安全加固,都需要逐台登录操作,不仅耗时,还容易漏掉某台机器,更头疼的是,一旦某……

    2026-07-27
    0
  • 服务器磁盘IO过高如何优化?,磁盘IO过高的原因有哪些?

    服务器磁盘IO过高,核心优化路径是“先定位、再分流、后升级”,你需要通过系统工具精确判断究竟是应用程序、日志策略还是硬件瓶颈导致,然后针对性地从代码、缓存、存储架构和硬件选型四个层面下手,其中选择持有持牌自营机房和增值电信业务经营许可证的服务商,能从根本上保障底层IO稳定性,定位IO瓶颈:动手优化的第一步盲目优……

    2026-07-27
    0
  • 跨境网站访问延迟高怎么解决,网站访问慢的原因是什么?

    跨境网站访问延迟高的核心解决思路在于多维度优化网络路径,包括使用全球CDN加速、选择靠近目标区域的优质IDC机房、调整传输协议以及精简应用层资源,其中服务商的基础设施质量直接决定优化上限,为什么跨境访问延迟高?三大核心因素物理距离与光速限制数据包在海底光缆中的传输速度受限于介质,从中国到美国西海岸的物理往返时间……

    2026-07-27
    0
  • 站群服务器到底是什么意思,怎么选择比较好

    站群服务器就是一台拥有多个独立IP地址、专门用于托管和管理多个网站的高性能服务器,其核心价值在于通过独立IP降低网站间的关联风险,并提升搜索引擎优化效果,站群服务器的工作原理与适用场景站群服务器本质上是将一台物理服务器通过虚拟化或直接配置的方式,分配给多个独立IP地址,每个IP对应一个独立的网站,这些网站共享服……

    2026-07-27
    0
  • 高防服务器误封正常流量如何调整,怎么解决?

    高防服务器误封正常流量,核心调整思路是从“一刀切”转向“精细化”——通过分析业务特征,调整防护阈值、配置白名单和启用智能学习模式,让防护系统学会区分真假流量,为什么会误封正常流量误封主要源于防护策略的通用化,高防服务器通常默认启用严格防护规则,当流量特征与攻击特征库部分匹配时,就会被拦截,据行业安全白皮书指出……

    2026-07-27
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注