❶ swfupload上传出现错误求解
可能是又重启session了,这是swfupload的一个bug,在ie里是没有这个问题的。
在他的文档里是有描述的,必须在上传后的回调函数里,重新获取session值。
swfuplaod在上传时,会新开一个进程,和原来的进程不一致,要解决这个问题,需要指定session_id,然后在登录页面判断,如果有post过来的session_id,那么就用函数session_id( $_POST['PHP_SESSIONID'])指定一下。
上传页的JS里面,可以获取当前的SESSION_ID的。
例如上传页的JS中:
post_params: {"PHPSESSID": "<?php echo session_id(); ?>"},
在验证的判断页中:
if (isset($_POST["PHPSESSID"])) {
session_id($_POST["PHPSESSID"]);
}
(这一段是网上的注释:在带有Session验证的网站后台中SWFUpload无法正常工作,这是因为SWFUpload在上传时相当于重新开辟了一个新的Session 进程,因此无法与原有程序的Session保持一致,这就需要在上传时传递原有程序的SessionID,根据它来“找回”其应有的Session。)
❷ spring框架中用 releasesession和回调函数哪个好
releaseSession(session)是Spring对session操作进行的包装
❸ iOS H264,H265视频编码(Video encode)
H264进行编码,iOS 11 之后,iPhone 7以上的设备可以支持新的编码器H265编码器,使得同等质量视频占用的存储空间更小。所以本例中可以使用两种方式实现视频数据的编码
系统已经提供VTIsHardwareDecodeSupported判断当前设备是否支持H265编码
1> g_isSupportRealTimeEncoder = (is64Bit == 8) ? true : false; 用来判断当前设备是32位还是64位
2> 创建H264/H265Session 区别仅仅为参数的不同,h264为kCMVideoCodecType_H264。 h265为kCMVideoCodecType_HEVC,在创建Session指定了回调函数后,当编码成功一帧就会调用相应的回调函数。
3> 通过 [self getSupportedPropertyFlags]; 获取当前编码器支持设置的属性,经过测试,H265不支持码率的限制。目前暂时得不到解决。等待苹果后续处理。
4> 之后设置编码器相关属性,下面会具体介绍,设置完成后则调用准备编码。
上述方法主要设置启动编码器所需的各个参数
1> kVTCompressionPropertyKey_MaxFrameDelayCount : 压缩器被允许保持的最大帧数在输出一个压缩帧之前。例如如果最大帧延迟数是M,那么在编码帧N返回的调用之前,帧N-M必须被排出。
2> kVTCompressionPropertyKey_ExpectedFrameRate : 设置fps
3> kVTCompressionPropertyKey_AverageBitRate : 它不是强制的限制,bit rate可能会超出峰值
4> kVTCompressionPropertyKey_RealTime : 设置编码器是否实时编码,如果设置为False则不是实时编码,视频效果会更好一点。
5> kVTCompressionPropertyKey_AllowFrameReordering : 是否让帧进行重新排序。为了编码B帧,编码器必须对帧重新排序,这将意味着解码的顺序与显示的顺序不同。将其设置为false以防止帧重新排序。
6> kVTCompressionPropertyKey_ProfileLevel : 指定编码比特流的配置文件和级别
7> kVTCompressionPropertyKey_H264EntropyMode :如果支持h264该属性设置编码器是否应该使用基于CAVLC 还是 CABAC
8> kVTCompressionPropertyKey_MaxKeyFrameIntervalDuration : 两个I帧之间最大持续时间,该属性特别有用当frame rate是可变
以上方法在每采集到一帧视频数据后会调用一次,我们将拿到的每一帧数据进行编码。
1> 通过frameID的递增构造时间戳为了使编码后的每一帧数据连续
2> 设置最大码率的限制,注意:H265目前不支持设置码率的限制,等待官方后续通知。可以对H264进行码率限制
3> kVTCompressionPropertyKey_DataRateLimits : 将数据的bytes和ration封装到CFMutableArrayRef传给API进行调用
4> : 调用此方法成功后触发回调函数完成编码。
1> 首先在回调函数中截取到I帧,从I帧中提取到(h265中新增vps),sps,pps信息并写入文件
2> 遍历其他帧将头信息0000,0001写入每个头信息中,再将该数据写入文件即可
这里我们简单介绍一下H264,H265码流信息
注意在H265流数据中新增vps在最前。
流数据中,属性集合可能是这样的:
经过处理之后,在Format Description中则是:
根据上述得到CMVideoFormatDescriptionRef、CMBlockBufferRef和可选的时间信息,使用CMSampleBufferCreate接口得到CMSampleBuffer数据这个待解码的原始的数据。如下图所示的H264数据转换示意图。
❹ JQuery--->Ajax请求,Session同步问题
这个问题按理说应该会改变的,无论是异步还是同步的调用。如果程序没错误的话,我怀疑
1.浏览器的问题。你是不是用的IE,内核是不是IE8呢?如果是的话建议你用用别的浏览器试试看,例如火狐,google等,或者卸载 KB976662 补丁(IE的补丁)
2,缓存问题,也就是说在你这个方法调用之前这个session是空值,然后缓存了就一直是空值。解决办法就是在你的请求URL后面加一个时间戳 例如"Ajax.aspx?act=Edit&r="+ Math.random();
3也或许是你的session丢失了,可能原因就是超时了,或者无故丢失,如果后者的话
建议你修改配置文件
例如:<sessionState mode='StateServer' stateConnectionString='tcpip=127.0.0.1:' sqlConnectionString='data source=127.0.0.1;Trusted_Connection=yes' cookieless='true' timeout='60'/>
这样的话除非你的电脑蹦了,否则session不会丢失的
以上只是猜测不知能否帮到你
❺ jquery中怎么访问session中存的对象
这个AJAX可以完成。$.post()方法发送异步请求,然后在回调函数里处理从服务端返回的值来判断用户是否登录过。
❻ 有谁用过xlsxwriter.class.php这个类,怎么设置指定字体颜色
session_set_save_handler 是表示自定义session的处理方式,否则则使用php内置session处理
(__CLASS__,'open') 是指各个处理方法
open(string $savePath, string $sessionName)
open 回调函数类似于类的构造函数, 在会话打开的时候会被调用。 这是自动开始会话或者通过调用session_start() 手动开始会话 之后第一个被调用的回调函数。 此回调函数操作成功返回 TRUE,反之返回FALSE。
close()
close 回调函数类似于类的析构函数。 在 write 回调函数调用之后调用。 当调用 session_write_close() 函数之后,也会调用 close 回调函数。 此回调函数操作成功返回 TRUE,反之返回 FALSE。
read(string $sessionId)
如果会话中有数据,read 回调函数必须返回将会话数据编码(序列化)后的字符串。 如果会话中没有数据,read 回调函数返回空字符串。
在自动开始会话或者通过调用 session_start() 函数手动开始会话之后,PHP 内部调用 read 回调函数来获取会话数据。 在调用 read 之前,PHP 会调用 open 回调函数。
read 回调返回的序列化之后的字符串格式必须与 write 回调函数保存数据时的格式完全一致。 PHP 会自动反序列化返回的字符串并填充 $_SESSION 超级全局变量。 虽然数据看起来和 serialize() 函数很相似, 但是需要提醒的是,它们是不同的。 请参考: session.serialize_handler。
write(string $sessionId, string $data)
在会话保存数据时会调用 write 回调函数。 此回调函数接收当前会话 ID 以及 $_SESSION 中数据序列化之后的字符串作为参数。 序列化会话数据的过程由 PHP 根据 session.serialize_handler 设定值来完成。
序列化后的数据将和会话 ID 关联在一起进行保存。 当调用 read 回调函数获取数据时,所返回的数据必须要和 传入 write 回调函数的数据完全保持一致。
PHP 会在脚本执行完毕或调用 session_write_close() 函数之后调用此回调函数。 注意,在调用完此回调函数之后,PHP 内部会调用 close 回调函数。
Note:
PHP 会在输出流写入完毕并且关闭之后 才调用 write 回调函数, 所以在 write 回调函数中的调试信息不会输出到浏览器中。 如果需要在 write 回调函数中使用调试输出, 建议将调试输出写入到文件。
destroy($sessionId)
当调用 session_destroy() 函数, 或者调用 session_regenerate_id() 函数并且设置 destroy 参数为 TRUE 时, 会调用此回调函数。此回调函数操作成功返回 TRUE,反之返回 FALSE。
gc($lifetime)
为了清理会话中的旧数据,PHP 会不时的调用垃圾收集回调函数。 调用周期由 session.gc_probability 和session.gc_divisor 参数控制。 传入到此回调函数的 lifetime 参数由 session.gc_maxlifetime 设置。 此回调函数操作成功返回 TRUE,反之返回 FALSE。
create_sid()
当需要新的会话 ID 时被调用的回调函数。 回调函数被调用时无传入参数, 其返回值应该是一个字符串格式的、有效的会话 ID。
❼ ajax处理完返回的数据后,会跳转并将返回的数据输出到空白页面上,怎么处理
首先建立一个空白页面然后通过ajax取到返回信息
你可以通过URL传递参数的方式把返回信息传递给空白页面如location.href = "WebForm21.aspx?data="+data+"";
在ajax的回调函数中再创建一个ajax 通过post方式把数据传递过去但是要注意如果还要跳转如: location.href = "WebForm21.aspx“跳转过去是不会显示信息的因为在ajax请求的时候会请求一次这个页面但是你跳转时会请求第二次这时候就需要用一些页面状态保持方法了比如说session
❽ 「回传」和「回调」是什么意思
回传
一. 使用QueryString变量
QueryString是一种非常简单也是使用比较多的一种传值方式,但是它将传递的值显示在浏览器的地址栏中,如果是传递一个或多个安全性要求不高或是结构简单的数值时,可以使用这个方法。
Response.Redirect( "target.aspx?param1=hello¶m2=hi ")
接收页面: string str = Request.QueryString["param1"];
string str1 = Request.QueryString["param2];
二.使用Cookie对象变量(Cookie是存放在客户端的)
设置Cookie: HttpCookie cookie_name = new HttpCookie("name");
cookie_name.Value = Label1.Text;
Reponse.AppendCookie(cookie_name);
获取Cookie:
string name= Request.Cookie["name"].Value.ToString();
三. 使用Session变量(session是存放在服务器端的)
设置Session: Session["name"] ="hello";
获取Session: string name = Session["name"].ToString();
四.使用Application 对象变量
Application对象的作用范围是整个全局,也就是说对所有用户都有效。此种方法不常使用,因为Application在一个应用程序域范围共享,所有用户可以改变及设置其值,故只应用计数器等需要全局变量的地方。
设置Application : Application["name"] = ="hello";
获取Application : string name = Application["name"].ToString();
回调
起始,起始,只是顺序执行,然后抽象出过程函数,这个抽象出来的东西是阻塞的,肯定要得到结果才处理。
然后,然后,出然了回调,不阻塞,直接返回,约定结果通过另一个方法提交返回。这个过程就是回调。
class A
{
private B b;
func fun1()
{
b.do_something();
}
func fun2(Result r){}
}
Class B
{
func do_something{
// in other threads
....
delegate.func2() // call back
}
}
❾ gui的回调函数里怎么调用自定义函数
在弹出式菜单的callback里面(当然也可以写在别的按钮之类的回调函数下面)
get(hObject,'Value'),可以得到当前 用户所选择第几项
如果要得到具体的菜单名字
contents = cellstr(get(hObject,'String')) 现获取所有的菜单列表
contents{get(hObject,'Value')} 取出所选择的那一个
❿ ASP页面即时提示消息框代码
asp.net
中可以实现即时消息提示功能的代码很多的sns网站都提供了短消息功能。
而且,如果我们在线的话会很快的收到好友的短消息。
这里介绍一种客户端的方法,简单实现。
主要的表:
user
:Uid
UName
Password
三个字段
Message
:Mid,
SenderId,
ReceiverId,
State,
Detail(SenderId和
ReceiverId)都是外键且对应user表中的Uid。
主要的思路很简单:用js每隔五秒钟发送一次ajax请求,获取当前用户在Message表中State为未读取(这里约定为数字1)且ReceverId为当前用户ID的Message
记录的数量。
页面的代码:
<%@
Page
Language="C#"
CodeBehind="Default.aspx.cs"
Inherits="MIDemo._Default"
%>
<!DOCTYPE
html
PUBLIC
"-//W3C//DTD
XHTML
1.0
Transitional//EN"
"
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html
xmlns="
http://www.w3.org/1999/xhtml"
>
<head
runat="server">
<title>无标题页</title>
<!--
两个js脚本文件-->
<script
type="text/javascript"
src="SqlHelp/jquery-1.3.2.js"></script>
<script
type="text/javascript"
src="SqlHelp/GetMessageCount.js"></script>
</head>
<body>
<form
id="form1"
runat="server">
<div
style="
border-color:Green;
border-style:solid;
margin-top:100px;
margin-left:300px;
width:300px;
height:50px;
text-align:center;">
您有<input
type="text"
value="0"
id="messageCount"/><a
href="ShowMessage.aspx">条短消息</a>
</div>
</form>
</body>
</html>
js代码:这里用到了Jquery框架,不再赘述,网上有很多的资料。
GetMessageCount.js
//------GetMessageCount.js
Begin----------------------
if(!GetMessageCount){
var
GetMessageCount
=
{};
}
$(document).ready(
function(){
GetMessageCount.FindMessage();
}
);
GetMessageCount.FindMessage
=
function(){
$.ajax({
//处理ajax请求
url:'FindNewMessage.ashx',
//
当前用户的ID,这里图省事就省略了,直接写死为
1,
//实际使用过程中可以从session中获取
。
。
。
。
data:{Uid:1},
cache:
false,
//回调函数返回未读短信数目
success:
function(response)
{
$('#messageCount').val(response);
},
error:function(data)
{
alert("加载失败");
}
});
//每隔5
秒递归调用一次,刷新未读短信数目
window.setTimeout(GetMessageCount.FindMessage,5000);核心语句
}
//------GetMessageCount.js
End----------------------
到了这里,贴出处理ajax请求页面的代码,非常简单
FindNewMessage.ashx
//----------------'FindNewMessage.ashx
Begin
using
System;
using
System.Collections;
using
System.Data;
using
System.Linq;
using
System.Web;
using
System.Web.Services;
using
System.Web.Services.Protocols;
using
System.Xml.Linq;
namespace
MIDemo
{
///
<summary>
///
$codebehindclassname$
的摘要说明
///
</summary>
[WebService(Namespace
=
"
http://tempuri.org/")]
[WebServiceBinding(ConformsTo
=
WsiProfiles.BasicProfile1_1)]
public
class
FindNewMessage
:
IHttpHandler
{
public
void
ProcessRequest(HttpContext
context)
{
context.Response.ContentType
=
"text/plain";
//就这一句代码,获取未读短信的数量,返回页面
//后台的sql代码就省略了
int
count
=
SqlHelp.SqlHelp.GetUnreadMessageCount(Convert.ToInt32(context.Request["Uid"]));
//返回页面
context.Response.Write(count);
}
public
bool
IsReusable
{
get
{
return
false;
}
}
}
}
//----------------'FindNewMessage.ashx
End