【问题标题】:Setting size parameter in content-disposition header with Javascript使用 Javascript 在 content-disposition 标头中设置大小参数
【发布时间】:2019-05-08 14:42:27
【问题描述】:

问题

我已经尝试在 content-disposition 标头中设置 size 参数已有一段时间了。

function uploadFile(file) {
    const data = new FormData();
    data.append('file', file);

    axios.post('url/of/endpoint', data);

FormData 默认不发送 size 参数,据我所知,我看不到自己设置它的方法。有没有办法用 Axios 做到这一点?我是否需要更底层并构建自己的标头?

背景

我的主要目标是通过 Java 端点将文件输入流传输到 S3。但是如果没有文件大小,所有数据都会加载到内存中,并且很有可能导致 OOM 异常。这个具体问题has been asked here as well。写我自己的字节缓冲区是唯一的方法吗?我应该停止懒惰并这样做吗?似乎是一个过于复杂的解决方案...

文件大小通常不包含在 FormData 中是否有原因?我尝试过使用 Content-Length,但它包含 content-disposition 标头并导致字节数不匹配。

【问题讨论】:

标签: javascript http axios


【解决方案1】:

是的,所以在办公室转了一圈之后……然后到我的朋友那里……我得出的结论是这是 Java 的一个缺点。好吧,不是最初的问题,而是分段上传需要总文件大小的事实。所以,我目前正在使用的实现,让我觉得超级肮脏,是在客户端添加一个 FormData 项size

function uploadFile(file) {
    const data = new FormData();
    data.append('size', file.size.toString());
    data.append('file', file);

    axios.post('url/of/endpoint', data);

然后更新后端以将该大小传递给 S3 SDK... ... oof。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-03
    • 2011-02-02
    • 2012-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多