首页 >web前端 >js教程 >用node.js&transloadit构建用户头像组件

用node.js&transloadit构建用户头像组件

Jennifer Aniston
Jennifer Aniston原创
2025-02-19 10:38:10322浏览

Building a User Avatar Component With Node.js & TransloadIt {{/if}}

请注意,我们包括一个包含用户名的隐藏字段。我们将通过我们的请求发送将其发送到Trainsloadit,以便可以在我们的模板中使用。>

现在添加JavaScript,从使用我们的JSON Handlebars助手开始一些可变初始化开始:

<span>var sig = {{{ json sig }}};</span>
现在,我们将transloadit插件绑定到上传表格:>

这比我们之前查看的最小整合初始化更为复杂,所以让我们一次浏览一下。
<span>$(function() {
</span>  <span>$('#avatar-form').transloadit({
</span>    <span>wait: true,
</span>    <span>params: JSON.parse(sig.params),
</span>    <span>signature: sig.signature,
</span>    <span>fields: true,
</span>    <span>triggerUploadOnFileSelection: true,
</span>    <span>autoSubmit: false,
</span>    <span>onSuccess: function(assembly) {
</span>      <span>$('img#avatar').attr('src', assembly.results.thumbnail[0].url + '?' + (new Date()).getTime() );
</span>      <span>var derivatives = {
</span>        <span>thumbnail : assembly.results.thumbnail[0].url,
</span>        <span>medium : assembly.results.medium[0].url,
</span>        <span>large : assembly.results.large[0].url
</span>      <span>};
</span>      $<span>.ajax({
</span>        <span>type: 'post',
</span>        <span>url: '/avatar',
</span>        <span>data: derivatives,
</span>        <span>success: function(resp){
</span>          <span>console.log(resp);
</span>        <span>}
</span>      <span>})
</span>    <span>}
</span>  <span>});
</span><span>});</span>
>

>我们正在从SIG变量中汲取参数和签名,该变量我们在服务器上生成,然后编码为JSON。由于参数部分是嵌套的,因此我们使用JSON.PARSE()将其转换为对象,从该对象将Transloadit从中提取相关参数。

>在插件初始化中,等待设置为true,这意味着我们要等到两个文件都已上传

>和

它们已经处理过。

> 使用汇编通知(您可以在高级用法部分稍后阅读)意味着您不一定需要等待文件进行处理,在这种情况下,您可以将其设置为false。

>字段设置为true,以告诉插件我们要在发送文件处理时要包含其他信息;在我们的情况下,这是一个名为用户名的隐藏表单字段,我们将使用身份验证的用户的用户名填充。

> 用户选择文件,而不是在提交表单时,使用

> triggeruploadonfileselection将文件发送到发送载荷。一旦结果从Transloadit返回,AutoSubmit就可以防止其提交表格,因为我们将自己手动执行此操作。
> 当数据从TransloadIt返回时, 汇编对象包含一个结果属性,进而包含我们每个“步骤”的属性。这些包含一个文件对象。由于我们仅上传一个文件,因此它们将是包含一个项目的数组。每个文件对象都包含许多属性,包括原始文件名称,元信息,transloadit的唯一ID以及其他位和零件。要查看全部信息,您可能希望将其记录到控制台中并查看。但是,我们真正感兴趣的只是URL属性,该属性包含S3上生成图像的URL。
或者,您可能希望使用SSL_URL属性,该属性与URL相同,但与HTTPS相同。

>我们只是通过相应的派生名称提取三个URL,然后创建三个衍生物的哈希及其相应的URL。 为了向用户提供视觉反馈,我们还抓住了缩略图的URL,并在页面上修改了头像以显示新的删除图像。
>最后,我们使用Ajax将数据默默发布回我们的应用程序。

这是捕获该数据的头像路线:

在生产中,您可能想对此进行消毒和验证。

如您所见,我们采集衍生图像及其URL的哈希,从req.user获取当前身份验证的用户,将Avatar属性设置为提供的哈希,然后更新用户模型。

这只是一种可能的方法。为了获得更快的反馈,您可能需要使用插件的on Result回调来获取缩略图,而不是等待所有三个导数。您可能不喜欢使用“客户代码”通知服务器的AJAX调用,而是更喜欢使用“汇编通知”功能,这为在后台运行汇编而不是在客户端上执行执行提供了其他好处。请咨询插件文档以获取各种选项。

>总结了我们的基本应用。别忘了,所有来源(包括身份验证机制)都在GitHub上结束。
<span>var sig = {{{ json sig }}};</span>
高级用法

在总结之前,让我们简要介绍一下Transloadit的几个更高级的方面。

其他客户端选项

>您不必使用提供的jQuery插件。在文档的“社区项目”部分中,您会发现许多替代方案,包括用于bootstrap的插件,一个用于拖动n'drop,一个角度插件或对普通旧Xhr的支持等等。

> XHR可能值得您更详细地研究。这是一种裸露的解决方案,可以提供足够的灵活性,同时要求您提供自己的反馈,例如某种上传指示器。还值得注意的是,一旦上载文件,它将通过以1000ms的间隔进行轮询服务器来确定何时完成组件。

>

>通知

>您可以在文件准备就绪时使用通知来使用通知来处理应用程序。使用这种方法,用户只需要等到上传完成。

> 从消费者的观点易于实现

>通知;只需将Notify_url与您的汇编说明一起包含:

>
<span>var sig = {{{ json sig }}};</span>
当您的URL被Transloadit刺穿时,提供的JSON将包含一个签名字段,您可以使用该字段来验证通知确实来自它们。只需使用您的euth Secret解码签名。

在开发过程中,您可能希望利用此代理包,以测试您的装配通知或使用隧道服务,例如Ngrok。

摘要

在这个两部分的系列中,我们对transloadit进行了全面研究。

在第一部分中,我们经历了一些优点和缺点,然后查看了关键概念。

在这一部分,我们弄脏了手,并使用jquery,node.js和express构建了一个简单的用户头像组件。

>您不仅限于jQuery,实际上,您可以自由使用香草JavaScript解决方案或您喜欢的框架。您甚至不需要从客户端应用程序中使用它,而在服务器端技术方面,您有多种选择。不过,希望您现在已经对如何用于图像处理有所了解。

>

您是否在项目中使用Transloadit?您知道更好的服务吗?在评论中让我知道。

>

>常见问题(常见问题解答)关于node.js中的用户avatar组件,带有transloadit

>如何自定义AVATAR在Node.js中的外观?您可以更改头像的大小,形状和颜色。例如,要更改大小,请调整“调整大小”参数。要改变形状,请使用“作物”参数。您还可以分别使用“水印”和“文本”参数在头像上添加水印或覆盖文本。

>如何在Neal-World应用程序中使用Transloadit中的Node.js中实现用户Avatar组件?

在现实世界应用程序中实现用户头像组件涉及将其集成到应用程序的用户注册或配置文件更新过程中。当用户注册或更新其配置文件时,您可以根据用户的详细信息使用Transloadit来生成头像。然后,您可以将阿凡达的URL存储在数据库中,并在需要显示用户的头像的任何地方使用它。

>在使用transloadit用于用户avatar生成时如何处理错误? Transloadit涉及聆听组件中的错误事件。如果在组装过程中发生错误,则Transloadit将发出“错误”事件。您可以聆听此活动并适当处理它。例如,您可能需要记录错误,通知用户或重试汇编。

>

>我可以在非node.js环境中使用transloadit用于用户头像生成吗?和Java。您可以使用这些API将traadlotit集成到您的nonnode.js应用程序中。

>如何通过Transloadit? Transloadit涉及对您的组装说明进行微调并有效地管理您的资源。例如,您可以减小生成的头像的大小,以节省带宽和存储空间。您还可以使用TransLoadit的“ auto_retry”功能自动重试的失败的组件,从而可以提高您的头像生成过程的可靠性。

>

>我如何测试带有transloadit的node.js中的用户avatar组件?

测试用户头像组件涉及为您的汇编说明创建单元测试,并为应用程序与Transloadit集成的集成测试。您可以为此目的使用摩卡咖啡或嘲笑等测试框架。您还可以使用模拟服务在测试过程中模拟transloadit的行为。

>如何使用transloadit?

>

>使用transloadit确保用户头像生成过程涉及使用安全的URL来使用安全URL您的组件并保护您的traxloadit API键。您可以使用TransLoadit的“签名身份验证”功能来确保只有授权客户端才能创建汇编。您还应该安全地存储transLoadit api键,并且永远不要将它们曝光在客户端代码中。

我可以将transloadit用于其他媒体处理任务以外的其他媒体处理任务吗?多功能媒体处理服务,除了用户头像生成以外,它还支持广泛的任务。您可以将其用于图像和视频处理,文件上传等。您甚至可以在单个组件中将多个任务链在一起以创建复杂的媒体处理工作流程。

如何通过TransloadIt?

>监视用户Avatar生成的进度,如何监视用户头像生成的进度?随着Transloadit的涉及聆听组装中的进度事件。 Transloadit在组装过程中定期发射“进度”事件。您可以收听这些事件并更新应用程序的UI以反映当前的进度。

>如何使用transloadit缩放用户头像生成过程?您可以创建多个组件以并行处理化身,这可以大大增加您的吞吐量。您还应该监视您的变速箱使用情况并根据需要调整计划,以确保您有足够的能力处理应用程序的负载。

以上是用node.js&transloadit构建用户头像组件的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn