在get我的响应上content-disposition: attachment;filename=f.csv,我需要在页面上下载此文件的内容.
在$.ajax请求我有一个错误.如何使用jQuery ajax(或get)获取文件内容?
UPD
error: function( jqXHR, textStatus, errorThrown ) {
console.log( jqXHR, textStatus, errorThrown );
}
Run Code Online (Sandbox Code Playgroud)
得到
Object {
...
readyState 0
responseText ""
status 0
statusText "error"
}, error,
Run Code Online (Sandbox Code Playgroud)
UPD 2
我找到了一个jquery.fileDownload插件,但它显示了带有保存或打开对话框的浏览器窗口,如下所示:

但我需要获取文件内容.
我不需要在电脑上下载文件.
UPD 3
完整代码列表:
$.ajax( {
url: link,
crossDomain: true,
dataType: "text",
success: function( data, textStatus, jqXHR ) {
alert( data );
},
error: function( …Run Code Online (Sandbox Code Playgroud) 我的html代码是这样的:
<a href="javascript:;" onclick="showAjaxPdf('{{ $row->file_path }}');"><i class="fa fa-file-pdf-o"></i></a>
Run Code Online (Sandbox Code Playgroud)
我的JavaScript代码是这样的:
function showAjaxPdf(file_path)
{
var file_path = file_path.replace(/\\/g,"/");
//example : file_path = assets/images/myfile.pdf
$.ajax({
type: "POST",
data: 'file_path=' + file_path,
url: "news/test",
success: function(response)
{
$('#test').html(response);
}
});
}
Run Code Online (Sandbox Code Playgroud)
我在控制器中的功能测试:
public function postTest(Request $request)
{
$file_path = $request->input('file_path');
return response()->download($file_path);
}
Run Code Online (Sandbox Code Playgroud)
当我单击pdf图标时,没有响应。
我希望当单击pdf图标时显示如下:
单击pdf图标时,图像如何显示?
谢谢
所以我尝试遵循 django 本身的文档如何创建 CSV 文件,我复制了代码但它没有用,应该是浏览器在成功时下载 somefilename.csv ,有什么问题吗?还是我需要在settings.py中设置一些东西?这是代码(HTML 和视图)
<div class="col-lg-12">
<div class="form-panel">
<form action="#" class="form-horizontal style-form" id="form1">
<div class="form-group">
<label class="control-label col-md-3">Campaign Name</label>
<div class="col-md-3 col-xs-11">
<input id = "campaign_name" type="text" class="form-control form-width">
</div>
</div>
<div class="form-group">
<label class="control-label col-md-3">Campaign Type</label>
<div class="col-md-3 col-xs-11">
<div class="btn-group">
<select id = "campaigntype" style="width:425px;background-color:white;height:30px;font-color:red;text-align-last:center;">
<option disabled selected value>-- Choose --</option>
<!-- <li><a href="#"></a></li> -->
<option value = "Informasi" >Informasi</option>
<option value = "Promosi" >Promosi</option>
<!-- <li><a href="#">Dropdown link</a></li> -->
</select>
</div>
</div>
</div> …Run Code Online (Sandbox Code Playgroud) 情况
我正在开发一个应用程序,我可以在其中创建一个包含 X 个项目的网格,并且每个项目都有一个打印按钮。单击此打印按钮可以调用 ajax 函数,该函数将网格项的 ID 传递给控制器。我根据该 ID 检索相关数据,然后将其下载到 excel 文件中。(具体项目的检索尚未完成)
到目前为止我所拥有的
到目前为止,我已经有了下载 excel 文件的基本代码,以及我的 grid 。
问题
我面临的问题是,如果我单击“打印”按钮……什么也没有发生,即使我的exporttoexcel 函数中有一个断点,也会向我显示该函数已输入,我可以单步执行,尽管没有错误,但什么也没发生。但是,我添加了调用相同函数的随机按钮,当我单击该按钮时,下载了 excel 文件。因此,我认为这个问题与 aJax 有关。
代码
<input type="button" value="Test" onclick="location.href='@Url.Action("ExportToExcel", "Profile")'" />
Run Code Online (Sandbox Code Playgroud)
这是下载文件的代码。这是我添加的一个简单按钮。
function ExportToExcel(id) {
$.ajax({
type: "POST",
url: "@Url.Action("ExportToExcel", "Profile")",
data: { "id": id },
dataType: "json"
});
}
Run Code Online (Sandbox Code Playgroud)
这是我想要工作的功能,但它不起作用,我看不出我有什么问题。
导出到 Excel 代码
public void ExportToExcelx()
{
var products = new System.Data.DataTable("teste");
products.Columns.Add("col1", typeof(int));
products.Columns.Add("col2", typeof(string));
products.Rows.Add(1, "product 1");
products.Rows.Add(2, "product 2");
products.Rows.Add(3, "product 3");
products.Rows.Add(4, "product …Run Code Online (Sandbox Code Playgroud) 我有一个信息列表,其中有一个字段名称是超链接的字段.我希望用户在点击它时下载该特定文件.
那么,如何使用PHP单击文件名下载文件?
我尝试使用ajax,其代码如下,但我没有下载任何文件.
的download.php
$filename = $_GET['val'];
// Fetch the file info.
$filePath = $_SERVER['DOCUMENT_ROOT'] . "/dfms/images/docs/".$filename;
if(file_exists($filePath)) {
$fileName = basename($filePath);
$fileSize = filesize($filePath);
// Output headers.
header("Cache-Control: private");
header("Content-Type: application/stream");
header("Content-Length: ".$fileSize);
header("Content-Disposition: attachment; filename=".$fileName);
// Output file.
readfile ($filePath);
exit();
}
else {
die('The provided file path is not valid.');
}
Run Code Online (Sandbox Code Playgroud)
javascript函数
<script>
function Inint_AJAX() {
try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) {} //IE
try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) {} //IE
try { return …Run Code Online (Sandbox Code Playgroud) 我想使用jQuery从我的浏览器下载并保存文件,特别是Ajax调用.
我发现这篇文章:使用Javascript/jQuery下载文件,并测试了Andrew Dunn提供的隐藏iFrame的解决方案.在一个简单的情况下它工作,服务器播放良好,提供内容配置:附件; ...标题,我得到另存为弹出窗口,一切正常.
但是我的情况更复杂:假设请求不仅仅是一个简单的URL; 必须提供额外的请求标头,可能它甚至不是GET方法,而是具有一些奇特的JSON有效负载的POST.这意味着我应该能够"替换"浏览器的内置get页面机制并提供我的AJAX请求.
为简单起见,我们假设我只需要为请求提供基本身份验证标头.但请记住,我可能需要更复杂的请求.
我对JavaScript和jQuery并不十分熟悉,所以我疯狂地在谷歌上搜索,最后找到了一个几乎解决方案.想法:
以下是相关代码:
function getFile(url)
{
//Creating the iframe
iframe = document.createElement('iframe');
iframe.id = hiddenIFrameID;
iframe.style.display = 'none';
document.body.appendChild(iframe);
// Adding the form to the frame
var externalHtml = '<form id="downloadForm" action="javascript: void(0);"></form>';
$(document.getElementById(hiddenIFrameID)).contents().find('body').html(externalHtml);
var formObj = $(document.getElementById(hiddenIFrameID));
var form = formObj.contents().find('#downloadForm');
// set the submit action to call my ajax function
form.submit(function () { getURL(url); });
// execute form's submit
form.submit();
}
function getURL(url)
{
var response; …Run Code Online (Sandbox Code Playgroud) 单击链接后,我想下载文件。该文件是动态提供的。
<a href="/server/myfunc?id=XXX" download="proposed_file_name">Download!</a>
Run Code Online (Sandbox Code Playgroud)
但是,如果/ server / myfunc?id = XXX链接未提供文件,则我需要能够向用户显示错误。如果文件不存在,我可以通过此链接返回布尔值false或任何http代码。
什么是最适合此实现的方法。请注意,我不希望以任何方式更改页面的当前状态,只需触发文件下载而不影响页面即可。如果不下载文件,则显示错误。
我正在研究以CSV格式导出数据的机制.我JSON使用jQuery以格式发送数据:
var data = JSON.stringify(dataToSend);
$.post('DumpToCSV', { 'data': data });
Run Code Online (Sandbox Code Playgroud)
然后在控制器中我生成一个CSV文件:
public ActionResult DumpToCSV(string data)
{
Response.Clear();
XmlNode xml = JsonConvert.DeserializeXmlNode("{records:{record:" + data + "}}");
XmlDocument xmldoc = new XmlDocument();
//Create XmlDoc Object
xmldoc.LoadXml(xml.InnerXml);
//Create XML Steam
var xmlReader = new XmlNodeReader(xmldoc);
DataSet dataSet = new DataSet();
//Load Dataset with Xml
dataSet.ReadXml(xmlReader);
//return single table inside of dataset
var csv = CustomReportBusinessModel.ToCSV(dataSet.Tables[0], ",");
HttpContext context = System.Web.HttpContext.Current;
context.Response.Write(csv);
context.Response.ContentType = "text/csv";
context.Response.AddHeader("Content-Disposition", …Run Code Online (Sandbox Code Playgroud) 我想我在JavaScript方面缺少一些代码.我正在为每个请求下载文档.当用户点击链接时,我会获取文档数据并将其流式传输.我在Fiddler上看到数据正在关闭,但.txt文档链接没有打开.
[HttpGet]
public HttpResponseMessage GetDataFiles(Int64 Id)
{
var results = context.PT_MVC_RequestFile.Where(x => x.RowId == Id).FirstOrDefault();
HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK);
try
{
if (results != null)
{
response.Headers.AcceptRanges.Add("bytes");
response.StatusCode = HttpStatusCode.OK;
response.Content = new ByteArrayContent(results.Data);
response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment");
response.Content.Headers.ContentDisposition.FileName = results.FileName;
response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
response.Content.Headers.ContentLength = results.Data.Length;
}
}
catch (EntityException ex)
{
throw new EntityException("GetFiles Failed" + ex.Message);
}
return response;
}
Run Code Online (Sandbox Code Playgroud)
首先,我下载了该请求的所有文档,如果用户点击该文件,我会调用下载流操作.
$.ajax({
url: url,
type: 'GET',
// data: JSON.stringify(model, null),
contentType: "application/json",
success: function (data) …Run Code Online (Sandbox Code Playgroud) 我有一个将放置在 Docker 容器中的 Django 应用程序。
该应用程序以 Dataframe 格式准备数据。我想允许用户将数据作为 excel 文件下载到他/她的本地驱动器。
我过去曾使用过 df.to_excel,但这在这种情况下不起作用。
请建议最好的方法来做到这一点。