【问题标题】:Upload file to HTML input type='file' that does not belong to a form将文件上传到不属于表单的 HTML 输入 type='file'
【发布时间】:2020-01-13 08:38:58
【问题描述】:

我正在尝试通过 curl 上传文件,该文件基本上应该模仿用户如何将文件上传到 https://lutzroeder.github.io/netron/

我可以看到有一个:

<input type="file" id="open-file-dialog" style="display:none" multiple="false" accept=".onnx, .pb, .meta, .tflite, .lite, .tfl, .bin, .keras, .h5, .hd5, .hdf5, .json, .model, .mar, .params, .param, .armnn, .mnn, .ncnn, .dnn, .cmf, .mlmodel, .caffemodel, .pbtxt, .prototxt, .pkl, .pt, .pth, .t7, .joblib, .cfg, .xml">

但输入不属于任何形式——这是我以前从未见过的。当我尝试做一个传统的帖子时:

curl -X POST -F ‘data=@example.h5’ https://lutzroeder.github.io/netron/

这是不允许的。我应该如何以编程方式将文件上传到该输入?我正在尝试自动创建这些 Netron 数字,因为必须手动选择例如100个文件得到100个数字会很麻烦

谢谢!

【问题讨论】:

  • 您会在用户不知情的情况下从用户的计算机中选择什么文件,为什么?如果使用 Javascript 处理上传,则文件输入元素不需要是表单的一部分。
  • 您想在 HTML 输入中自动选择文件吗?除非有人处理该请求,否则您无法通过 curl 进行防御。我认为不可能做你想做的事
  • curl 在服务器上运行,而 javascript 在客户端(浏览器)上运行 - 为了让 curl 发送文件,它需要发送该文件。想象一下,如果一个网站可以从您的计算机中随机选择文件并在您不知情的情况下将它们发送到互联网上,那将是多么混乱
  • 我说的是试图通过 Netron 自动创建图形 - 基本上它会通过文件对话框提示您 - 但我想自动化这个过程。有没有办法以编程方式将文件上传到服务器,而无需我在下拉列表中手动选择文件?
  • 例如,Selenium 可以做到 - 但这似乎......至少可以说很麻烦,我希望有一个更简单的解决方案。你认为存在吗?

标签: html forms curl post browser


【解决方案1】:

从您和其他人的评论来看,HTML 问题可能是 1. 不可行; 2. 无论如何都不会完全解决您自动化创建图形的目标(填写输入只是第一步,您还需要自动化导出过程吗?)

因此,我建议最简单的解决方案是运行您自己的实例 Netron 查看器。 Netron 是一个开源项目,如its documentation 所示,有多种方法可以在您自己的计算机上运行它。

您正在查看的方法是利用托管在github.io 上的浏览​​器版本。该文档提供了各种其他方式来运行查看器,macOS/Linux/Windows/Python Server 选择最适合您情况的一种(取决于您的操作系统和编程经验),然后编写包装脚本(或破解初始化处理,因为你有源代码)向查看器提供文件并收集输出。

【讨论】:

  • 感谢您的回复,我知道我可以运行自己的服务器-但是,这并不能解决自动图形创建的问题-我最终只能使用本地服务器弄清楚如何使界面自动化。此外,由于我收集数据的方式,运行我自己的服务器是不可行的——Netron 开发人员特别推荐这种情况下的 webapp(参见github.com/lutzroeder/netron/issues/162github.com/lutzroeder/netron/issues/400
猜你喜欢
  • 2015-02-22
  • 2013-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-13
  • 2016-05-25
  • 2012-08-13
  • 1970-01-01
相关资源
最近更新 更多