单击按钮时,我的GWT应用程序返回嵌入在HTML页面中的PDF文件,其内容如下所示:
<html><head></head>
<body marginwidth="0" marginheight="0" bgcolor="rgb(38,38,38)">
<embed width="100%" height="100%" name="plugin"
src="http://myserver/?cmd=getMyPdf" type="application/pdf">
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
问题是服务器创建这个PDF文件需要一段时间,所以我想要的是一个带有加载动画的等待屏幕,可以在后台下载PDF文件,然后当文件完成后,显示页面如上所述.
一种显而易见的方法是显示加载页面,向服务器发送异步命令,然后一旦调用onSucceed方法,就像正常一样调用页面.下行是我必须添加一些服务器端逻辑,以使PDF创建在后台工作...
有没有办法用GWT API做客户端?
在我的Rails 5应用程序中,表单的默认提交按钮在提交时被禁用,以防止意外双重提交.无论何时在提交后重定向页面或重新呈现验证错误,都会再次启用该按钮.
在我的情况下,我让控制器使用以下命令发送我在控制器操作中在内存中构建的zip文件:
send_data zip.read, filename: "some_file.zip"
但是,在提供文件后,表单不会重新启用.我必须ctrl-F5页面重置表单,并能够做出不同的选择.
rails的方法是什么?
我有一个通用的处理程序Document.ashx,可以通过读取查询字符串中的信息来动态创建Word文档Document.ashx?clientid=123&documentid=10,它可以很好地工作.
我需要创建一个带有复选框和Download All按钮列表的界面.到目前为止我最好的想法是使用这样的东西来调用处理程序.
$("body").append("<iframe src='Document.ashx?clientid=123&documentid=10'></iframe>
<iframe src='Document.ashx?clientid=123&documentid=11'></iframe>")
Run Code Online (Sandbox Code Playgroud)
Chrome和Firefox按预期处理此问题,但IE9会提示用户询问是否要保存第一个文件但忽略以下文件.
如何从客户端开始下载多个文件?
这是一个内部网站点,因此文件总是在〜1秒内生成,用户一次选择〜3-5个文档.绝大多数用户都在使用IE9.我可以告诉每个人他们必须使用Firefox或Chrome,但我宁愿找到适用于所有现代浏览器的解决方案.
我不想创建一个zip文件服务器端,因为它们总是必须首先解压缩它(这对于某些人来说太难理解)并且它会减慢它们的速度.
我们有一个AngularJS Web应用程序,可以从服务器加载PDF文档,并在页面中显示如下:
<object id="preview" type="application/pdf" data="blob:{fileUrl}">
每当用户执行某些操作时,我们都会有新的审核要求:
PDF下载和打印控件位于浏览器PDF查看器中.我们只需支持最新的Google Chrome(截至2018年7月的Chrome 68).
是否可以检测从PDF查看器下载或打印文件的时间?我没有看到任何前印刷/后印刷事件,我认为因为它是交叉原点.我们不需要控制处理程序,只是以某种方式检测事件.
我想在用户单击允许他们下载文件的超链接后将用户重定向到其他网页.但是,由于他们需要在打开/保存文件对话框中进行选择,因此我不想在他们接受下载之前重定向它们.
如何检测到他们执行了此操作?
我正在使用Angular js来显示加载屏幕.它适用于除REST服务之外的所有REST服务调用以下载文件.我理解为什么它不起作用,因为下载我没有使用$ resource进行任何服务调用; 而不是我使用正常的方法下载文件因此Angular js代码没有任何控制启动/完成服务请求.我尝试使用$ resource来访问这个REST服务但是我从这个服务获取数据,在这种情况下,加载屏幕工作正常,但不确定如何使用此数据显示给用户以角度方式下载.以下是必需的细节.请帮忙.
方法1使用iframe方法:
/*Download file */
scope.downloadFile = function (fileId) {
//Show loading screen. (Somehow it is not working)
scope.loadingProjectFiles=true;
var fileDownloadURL = "/api/files/" + fileId + "/download";
downloadURL(fileDownloadURL);
//Hide loading screen
scope.loadingProjectFiles=false;
};
var $idown; // Keep it outside of the function, so it's initialized once.
var downloadURL = function (url) {
if ($idown) {
$idown.attr('src', url);
} else {
$idown = $('<iframe>', { id: 'idown', src: url }).hide().appendTo('body');
}
};
Run Code Online (Sandbox Code Playgroud)
方法2使用$ resource(不确定如何在屏幕上显示数据下载)
/*Download file …Run Code Online (Sandbox Code Playgroud) 我正在使用jQuery下载一些需要一些时间来创建的文件,因此我展示了一个加载gif来告诉用户要有耐心.但问题是,加载gif当前显示并隐藏在瞬间.
有没有办法让我在下载完成后隐藏加载gif并且用户在屏幕上显示Save File弹出窗口?
HTML
<tr data-report_id="5">
<td>
<input type="button" id="donwload"></input>
<img class="loading" src="/Images/Loading.gif"/>
<iframe id="hiddenDownloader"></iframe>
<td>
</tr>
Run Code Online (Sandbox Code Playgroud)
JS
var reportId = $(this).closest("tr").attr("data-report_id");
var url = "/Reports/Download?reportId=" + reportId;
var hiddenIFrameId = 'hiddenDownloader';
var iframe = document.getElementById(hiddenIFrameId);
if (iframe === null) {
iframe = document.createElement('iframe');
iframe.id = hiddenIFrameId;
iframe.style.display = 'none';
document.body.appendChild(iframe);
}
iframe.src = url;
$(".loading").hide();
Run Code Online (Sandbox Code Playgroud)
我最终使用的解决方案
<script>
$("#download").on("CLICK", function () {
var button = $(this);
button.siblings(".loading").show();
var rowNumber = GetReportId();
var url = GetUrl();
button.after('<iframe style="display:none;" src="' + url …Run Code Online (Sandbox Code Playgroud) 在我的项目中,我使用类似以下函数的内容来重定向用户以下载文件
function promptDownload(file){
location.href = "http://example.com/downloads/"+file;
}
Run Code Online (Sandbox Code Playgroud)
众所周知,当我调用此函数时,浏览器只会提示下载对话框,并且不会中断我的应用程序流.我想要做的是确定下载完成或取消的时间.
应该有类似onLoad,onFinishedLoading,onConnectionEnd和等,但我无法找到任何东西.
我有一个方法,通过AJAX调用后端,从MySQL数据库获取一个blob文件,由PHP检索.
问题是PHP变量包含一个字符串,但AJAX调用是空的,PDF函数不起作用.
这是AJAX代码,它被调用.
self.showPDF = function() {
$.ajax({
type: 'GET',
url: BASEURL + 'index.php/myprofile/openUserPDF/' + auth,
contentType: 'application/json; charset=utf-8',
dataType: 'json',
})
.done(function(data) {
console.log(data);
window.open("data:application/pdf," + escape(data));
})
.fail(function(jqXHR, textStatus, errorThrown) {
alert("Could not open pdf" + errorThrown);
})
.always(function(data) {});
}
Run Code Online (Sandbox Code Playgroud)
这是后端的PHP函数,我使用的是CodeIgniter框架.
public function openUserPDF($token) {
if ($this->input->is_ajax_request()) {
$userid = $this->myajax->getUserByAuth($token);
if ($userid) {
/* If we have an impersonated user in the session, let's use him/her. */
if (isset($_SESSION['userImpersonated'])) {
if ($_SESSION['userImpersonated'] > 0) …Run Code Online (Sandbox Code Playgroud) 我想在一个 javaScript 函数中执行两个操作
强制下载 csv 文件
发送 ajax 请求以标记表中已下载记录的记录。
由于这两个操作都会向用户显示提示和对话框,因此我想延迟执行第二个事件,直到第一个事件完成。
当用户打开页面时,他们会看到当前记录的列表。他们检查他们想要处理的记录。然后将检查的记录打包,并向用户呈现下载“保存”或“打开”框。当该操作完成后,ajax 请求应该执行。
我的想法是我可以检测到“a”何时从文档中删除。但我不确定我会怎么做。
这是我的下载代码
var a = window.document.createElement('a');
a.href = window.URL.createObjectURL(new Blob(exportArray, {type: 'text/csv'}));
a.download = 'jobCostHandOff.csv';
// Append anchor to body.
document.body.appendChild(a)
a.click();
// Remove anchor from body
document.body.removeChild(a)
Run Code Online (Sandbox Code Playgroud) 我有一个jQuery插件,用于在default.aspx asp.net页面上动态创建和呈现表单,然后提交它.它提交的页面是pdf.aspx页面.页面构建PDF然后使用Response.Write将文件(application/pdf)写入浏览器.我也使用相同的方法将XLSX文件呈现给浏览器.它的效果非常好,但是我需要一个回调或一些事件来告诉按钮什么时候停止旋转.这可以防止用户连续单击Excel或PDF按钮.当没有使用javascript创建文件对话框窗口时,是否有人知道检测文件对话框窗口的方法?我也对服务器端的其他回调方法持开放态度.
我有一个PHP脚本,可以从服务器下载PDF文件,并提示您打开它或保存它.该脚本接受一次性令牌,用于代替文件名,以隐藏文件名.
如果你去实际的php页面http://example.com/files/download/token脚本工作正常,它下载PDF.
我可以使用标准链接标记将人们发送到该页面,但是一旦文件下载,我需要更新该页面上通过该下载脚本返回的内容.
有没有办法让ajax调用打开一个新窗口,文件将下载,然后返回我需要更新当前页面的数据?
下载脚本还有更多内容,但主要部分是实际的下载部分:
header("Content-type: application/pdf");
$this->load->helper('file');
readfile("static/temp_statements/".$local_file_name);
unlink("static/temp_statements/".$local_file_name);
Run Code Online (Sandbox Code Playgroud) javascript ×9
jquery ×6
download ×4
ajax ×2
asp.net ×2
iframe ×2
pdf ×2
php ×2
angularjs ×1
asp.net-4.0 ×1
asynchronous ×1
browser ×1
dom-events ×1
forms ×1
gwt ×1
java ×1
printing ×1