相关疑难解决方法(0)

使用 jquery、通用处理程序和等待状态下载文件

环境:.Net 3.5,jQuery 2.1.4

结果Hello, World在回调中返回,但有没有办法让它作为附件返回?

查询:

function test() {
    $.ajax({
        type: "POST",
        url: "Handler1.ashx",
        contentType: "application/json; charset=utf-8",
        success: function (data) {
            $('#progressBar').hide();
            //alert(data);                
        }
    });
Run Code Online (Sandbox Code Playgroud)

通用处理程序:

public class Handler1 : IHttpHandler
    {

        public void ProcessRequest(HttpContext context)
        {
            //Create and populate a memorystream with the contents of the 
            //database table 
            System.IO.MemoryStream mstream = GetData();
            //Convert the memorystream to an array of bytes. 
            byte[] byteArray = mstream.ToArray();
            //Clean up the memory stream 
            mstream.Flush();
            mstream.Close();
            // Clear all content output from …
Run Code Online (Sandbox Code Playgroud)

c# asp.net jquery

4
推荐指数
1
解决办法
1520
查看次数

使用Ajax和Flask下载Excel文件

用户按下form页面上的按钮:

<form id="form">
    <input type="button" id="export" value="Export"/>
</form>
Run Code Online (Sandbox Code Playgroud)

单击该按钮后,将进行以下Ajax调用:

ajaxCall('/export', {}, callback_export, 'get');
Run Code Online (Sandbox Code Playgroud)

哪里

function ajaxCall(url, params, callback, type) {
    if (validate()) {
        var request;
        request = $.ajax({
            url: url,
            type: type,
            data: params
        });
    }
    request.done(function (response, textStatus, jqXHR){
        callback(response);
    });
}
Run Code Online (Sandbox Code Playgroud)

Flask应用程序看起来像这样:

@app.route('/export')
def export():
    xl_file= '/absolute/path/to/excel/file.xlsx'
    return send_file(xl_file, as_attachment=True, mimetype='application/vnd.ms-excel')
Run Code Online (Sandbox Code Playgroud)

文件的文件内容将返回到浏览器(请参见下图),但不会将文件本身作为附件返回.

问题是,回调需要什么来接受作为文件附件的响应?或者,需要进行哪些修改?

(是的,我搜索并阅读了SE上的许多帖子.大多数讨论使用该form.submit()方法但不提供详细信息.我希望避免使用,form.submit()因为其中的其他元素#form无法提交.)

在此输入图像描述

javascript python ajax flask

3
推荐指数
1
解决办法
4600
查看次数

在Wordpress Admin中从PHP数组创建"下载到CSV"按钮

我已经使用函数填充了一个多维PHP数组,我希望允许我的管理员用户下载内容.

我找到了一个PHP函数,它允许我将数组导出为CSV并将其放在我的functions.php中,使用第二个函数将其挂钩到AJAX并使用jQuery来激活AJAX函数.

有什么问题?

所以我99%肯定AJAX正确发布到PHP函数,但由于某种原因下载没有启动.

我已经研究了很多,但很难找到解决方案 - 真的很欣赏正确方向的一点!

// Function to generate download

function convert_to_csv( $input_array, $output_file_name, $delimiter ) {
    /** open raw memory as file, no need for temp files, be careful not to run out of memory thought */
    $f = fopen( 'php://memory', 'w' );
    /** loop through array  */
    foreach ( $input_array as $line ) {
        /** default php csv handler **/
        fputcsv( $f, $line, $delimiter );
    }
    /** rewrind the "file" with the csv lines **/
    fseek( …
Run Code Online (Sandbox Code Playgroud)

javascript php ajax wordpress jquery

3
推荐指数
1
解决办法
1693
查看次数

类型“AxiosResponse&lt;any&gt;”上不存在属性“blob”

我一直在使用 React/Typescript 项目处理文件下载链接,并遇到了这个问题。

     axios({
            method: "post",
            url: "http://localhost:8080/test",
            data: bodyFormData,
            headers: { "Content-Type": "multipart/form-data" },
            responseType: 'blob',
        })
            .then(res => res.blob())
            .then(blob => {
                const url = window.URL.createObjectURL(blob);
                const a = document.createElement('a');
                a.style.display = 'none';
                a.href = url;
                // the filename you want
                a.download = 'test.xml';
                document.body.appendChild(a);
                a.click();
                window.URL.revokeObjectURL(url);
                alert('your file has downloaded!')
            }).catch(function (e) {
                //handle error
                console.log(e);
            })
Run Code Online (Sandbox Code Playgroud)

参考:通过jQuery.Ajax下载文件

当我尝试这样做时,Typescript 声称出现错误。我还尝试将 res.blob() 更改为 res.data.blob() 然后它不会声明错误,但浏览器控制台说 blob() 不是函数。

typescript reactjs axios

3
推荐指数
2
解决办法
7433
查看次数

如何在jQuery AJAX成功时强制下载文件?

我在php中动态生成一个文件,如下所示:

$attachment_url = "http://www.mysite.com/file.jpg";
header('Pragma: public');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Cache-Control: private',false);
header('Content-Type: application/force-download');
header('Content-Disposition: attachment; filename="'.basename( $attachment_url ).'"');
header('Content-Transfer-Encoding: binary');
header('Connection: close');
readfile( $attachment_url );
Run Code Online (Sandbox Code Playgroud)

然后,这些数据通过jQuery.ajax传递

我想在成功时打开文件下载对话框.

现在我有这个:

success: function(data, textStatus, XMLHttpRequest) {
    var win = window.open();
    win.document.write(data);
}
Run Code Online (Sandbox Code Playgroud)

这会打开一个新窗口并显示原始文件数据.相反,我想要打开一个下载对话框.

javascript php ajax jquery download

2
推荐指数
1
解决办法
1万
查看次数

在Javascript中如何在窗口位置重定向Ajax响应

我目前有以下工作代码(angular但适用于任何JS框架):

var url = '/endpoint/to/my/file';

$http({
  method: 'GET',
  url: url
})
.success(function(jdata) {
  window.location = url;
})
.error(function(je){
  // display errors on page
});
Run Code Online (Sandbox Code Playgroud)

在表单完成并且用户点击"提交"之后调用上面的内容(实际情况比这更复杂,但它是相同的想法).我异步进行表单检查,因此没有页面重新加载.

如果请求成功,则返回二进制文件(pdf文件),如果不成功,请求将返回400 BadRequest,并在JS中格式化错误.所以我做的是,如果成功,我重定向到相同的URL以获得PDF,否则我得到JSON错误对象并用它做一些事情.

如果请求成功,我怎么能避免提出两个请求?

  • 注1:在后端,我想只保留一条完成所有操作的路线,检查+返回PDF
  • 注2:我认为目前的情况非常简洁,因为我有一个异步表单检查,如果成功,文件直接在浏览器中下载,因为我"CONTENT-DISPOSITION" -> "attachment"在成功响应的HTTP头中

更新:有关Emile请求的体系结构的其他信息:在我的用例中,我有一个端点检查输入(和其他外部要求).出于安全原因,如果不满足所有要求,我将无法输出PDF,因此无论如何我必须在交付文件(文件自动生成)之前进行检查.因此,拥有两个端点只会是多余的,并增加一些不必要的复杂性.

在编写时我认为另一种解决方案可能是在执行检查时在端点上传递参数,这样如果成功,它会停止并且不会生成PDF,然后重定向到相同的端点,而不会输出将输出PDF的标志.所以我做了两次检查,但只加载(并生成 - 这是资源密集型)文件只有一次,我只有一个端点......

这是改编的代码:

var url = '/endpoint/to/my/file';

$http({
  method: 'GET',
  url: url+'?check'
})
.success(function(jdata) {
  window.location = url;
})
.error(function(je){
  // display errors on page
});
Run Code Online (Sandbox Code Playgroud)

在后端(我使用Play框架/ Scala)

def myendpoint(onlyDoCheck: Boolean = false) = Action{implicit request =>
   myForm.bindFromRequest.fold(
     e => BadRequest(myErrors),
     v …
Run Code Online (Sandbox Code Playgroud)

javascript

2
推荐指数
1
解决办法
3194
查看次数

通过ajax调用ASP MVC下载PDF文件

我尝试下载一个pdf文件按钮点击通过ajax调用使用ASP MVC模型当我点击我的按钮,什么都没发生,但当我在网址上添加控制器方法我的文件下载.我只想在按钮点击下载它

JS:

$('#PrintTimeSheet').click(function () {
            $.ajax({
                type: 'POST',
                url: "/Home/DownloadFile",
                success: function (response) {
                }
            });
});
Run Code Online (Sandbox Code Playgroud)

控制器:

public FileResult DownloadFile()
{
    Document PDF = new Document();
    MemoryStream memoryStream = new MemoryStream();
    PdfWriter writer = PdfWriter.GetInstance(PDF, memoryStream);
    PDF.Open();
    PDF.Add(new Paragraph("Something"));
    PDF.Close();
    byte[] bytes = memoryStream.ToArray();
    Response.ContentType = "application/pdf";
    Response.AddHeader("Content-Disposition", "attachment;filename=Receipt-test.pdf");
    Response.BinaryWrite(memoryStream.ToArray());
    return File(bytes, "application/pdf");
}
Run Code Online (Sandbox Code Playgroud)

ajax asp.net-mvc

1
推荐指数
1
解决办法
8735
查看次数

MVC - 如何从 url 请求和保存 pdf 文件

我需要编写一个包含 3 个部分的 api:

  1. 从 pdf url 获取 pdf 文件。
  2. 转换pdf。
  3. 返回转换后的pdf文件。

我已经完成了第 2 部分和第 3 部分,剩下的就是从 url 获取 pdf 并将其复制/下载到我的 mvc web api。

这是测试的html代码:

< script >
  $('#btnSendRequest').on('click', function() {
    $.ajax({
      type: "POST",
      url: "/Convertor/Html",
      data: {
        strUrl: "http://make-sense.co.il/kb/avcp-script-installation.pdf"
      },
      success: function(data) {
        return true;
      },
    });
  }); < /script>
Run Code Online (Sandbox Code Playgroud)
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script>
  <title>tester</title>
</head>

<body>
  <h1>tester html</h1>
  <div>
    <input id="btnSendRequest" type="button" value="SendHttpRequest" />

  </div>
Run Code Online (Sandbox Code Playgroud)

我的 ActionResult 函数: "convertor/html" ,从网页中获取 url 字符串。我需要的是当我单击按钮时,pdf 文件将自动下载到我的服务器。

public ActionResult …
Run Code Online (Sandbox Code Playgroud)

.net c# api asp.net-mvc

1
推荐指数
1
解决办法
6275
查看次数

标签 统计

ajax ×4

javascript ×4

jquery ×3

asp.net-mvc ×2

c# ×2

php ×2

.net ×1

api ×1

asp.net ×1

axios ×1

download ×1

flask ×1

python ×1

reactjs ×1

typescript ×1

wordpress ×1