微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ASP Net Core Filepond 从服务器加载文件

如何解决ASP Net Core Filepond 从服务器加载文件

我有一个项目,它使用 Filepond 上传文件,我需要它从服务器加载文件

我已经关注了 docs 但它不起作用。 Filepond 给出错误 Error during load 400,它甚至不发送从服务器加载文件的请求

这是我的 javascript

let pond = FilePond.create(value,{
            files: [
                {
                    // the server file reference
                    source: 'e958818e-92de-4953-960a-d8157467b766',// set type to local to indicate an already uploaded file
                    options: {
                        type: 'local'
                    }
                }
            ]
        });

FilePond.setoptions({
    labelFileProcessingError: (error) => {
        return error.body;
    },server: {
        headers: {
            '@tokenSet.HeaderName' : '@tokenSet.RequestToken'
        },url: window.location.origin,process: (fieldName,file,Metadata,load,error,progress,abort) => {
            // We ignore the Metadata property and only send the file

            fieldName = "File";

            const formData = new FormData();
            formData.append(fieldName,file.name);

            const request = new XMLHttpRequest();
            request.open('POST','/UploadFileTemp/Process');
            request.setRequestHeader('@tokenSet.HeaderName','@tokenSet.RequestToken');

            request.upload.onprogress = (e) => {
                progress(e.lengthComputable,e.loaded,e.total);
            };

            request.onload = function () {
                if (request.status >= 200 && request.status < 300) {
                    load(request.responseText);
                }
                else {
                    let errorMessageFromServer = request.responseText;
                    error('oh no');
                }
            };

            request.send(formData);

        },revert: "/UploadFileTemp/revert/",load: "/UploadFileTemp/load"


    }
})

这是我的控制器

 public async Task<IActionResult> Load(string p_fileId)
        {
            //Code to get the files

            //Return the file 
            Response.Headers.Add("Content-disposition",cd.ToString());
            Response.Headers.Add("X-Content-Type-Options","nosniff");
            return PhysicalFile(filePath,"text/plain");
        }

注意

我已经通过邮递员测试了我的控制器并且它可以工作。我还检查了 content-disposition 标头

解决方法

我建议先设置所有选项,然后设置文件属性。

您正在设置 files,然后您告诉 FilePond 在哪里可以找到它们,它可能已经在尝试加载它们,但还没有端点。

将代码重构为如下所示应该可以解决问题。

let pond = FilePond.create(value,{
    server: {
        headers: {
            '@tokenSet.HeaderName': '@tokenSet.RequestToken',},url: window.location.origin,process: (fieldName,file,metadata,load,error,progress,abort) => {
            // your processing method
        },revert: '/UploadFileTemp/revert',load: '/UploadFileTemp/load',files: [
        {
            // the server file reference
            source: 'e958818e-92de-4953-960a-d8157467b766',// set type to local to indicate an already uploaded file
            options: {
                type: 'local',],});

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。