所以,我使用的是Matthew Ephraim的GhostscriptSharp,它是我ASP.Net MVC项目中非托管Win32 Ghostscript DLL的简单C#包装器.一些背景:
我试图做的是让用户上传PDF,然后将该文档转换为图像,然后我可以保存到我选择的任何目录中(以及做一些其他OOP以将新图像绑定到我的网站) .
我决定使用Ephraim先生的包装类(GhostscriptSharp)因为它很简单易用,它让我可以相对干净地访问DLL的API.
为了测试它,我创建了一个虚拟的C#控制台应用程序,以确保我可以加载DLL,访问它,将PDF文件交给本地磁盘,然后让它将JPG写入同一本地磁盘.经过一些学习经历,我获得了成功.我会把它交给C:\ INPUT.pdf,它会递给我C:\ OUTPUT.jpg.
但是,在将我在控制台应用程序中使用的GhostScriptSharp代码集成到我的ASP.NET MVC项目到我用P/invoke调用DLL的位置之后,Ghostscript返回了int/error代码-100
,这是致命的错误(E_Fatal
在GhostScript源代码中调用).我通过HTML表单上传的文件得到了相同的结果,如果我把它与我在工作控制台应用程序中使用的完全相同的硬编码路径.
作为参考,抛出异常的行在GhostScriptSharp.cs中是93-97(在CallApi
函数中):
int result = InitAPI(gsInstancePtr, args.Length, args);
if (result < 0) {
throw new ExternalException("Ghostscript conversion error", result);
}
Run Code Online (Sandbox Code Playgroud)
显然,抛出异常,因为result
是-100
.
当调用InitAPI时,实例ptr是有效的int
(虽然我不知道GS的实例是否正确),args的长度为20(是string[]
)有效的GhostScript选项(包括正确转义的路径)到我的输入和输出文件).
长话短说,我做错了什么?错误代码-100
似乎是一个全能,因为没有文档说明这里可能出错的地方.
非常感谢任何帮助,谢谢你提前.
所以,情况是这样的:在尝试使用添加下拉框jquery.multiselect插件形式对当前使用jquery.validate有其他领域(文本输入字段,具有单个文本输入插件float
数值范围),所有当前验证正确.
当我尝试添加验证规则,我根本无法jquery.validate到任何验证我的多选下拉列表.以下是我的代码片段(所有代码都假设已加载所需的插件 - 请参阅下面的使用版本):
HTML:
<form action="some/action" id="myForm" method="POST">
Input 1: <input type="text" value="" name="input1" maxlength="200" id="input1"><br/>
Input 2: <input type="text" value="" name="input2" maxlength="100" id="input2"><br/>
Input 3: <input type="text" value="" name="input3" maxlength="50" id="input3"><br/>
Select: <select class="someSelect" name="mySelect" id="mySelect" multiple="multiple">
<option value="some_val1">Some Value</option>
<option value="some_val2">Some Other Value</option>
</select>
<input type="submit" value="Submit" />
</form>
Run Code Online (Sandbox Code Playgroud)
Javascript:
$(document).ready(function() {
$('#mySelect').multiselect({
noneSelectedText: 'Select Something (required)',
selectedList: 3,
classes: 'my-select'
});
$.validator.addMethod("needsSelection", function(value, element) {
return $(element).multiselect("getChecked").length > 0;
}); …
Run Code Online (Sandbox Code Playgroud) 让ASP.NET MVC3绑定包含列表的复杂JSON对象时遇到问题.
这是我对象的结构.
public class PageModel
{
public PageModel() { }
public CustomObject1 CustomObject { get; set; }
public IEnumerable<CustomObject2> Objects { get; set; }
}
public class CustomObject1
{
public CustomObject1() { }
[Required]
public int CustomId1 { get; set; }
public string CustomName { get; set; }
}
public class CustomObject2
{
public CustomObject2() { }
[Required]
public int Custom2Id { get; set; }
public CustomObject3 SubItem { get; set; }
public int SubItemId { get; set; } …
Run Code Online (Sandbox Code Playgroud) 这是我的情况:使用PHP和MySQL作为我的后端,jQuery和jsTree用于我的前端.
我的树在左侧,点击一个节点将触发某些信息加载到浮动到树右侧的框中.他们可以使用此行为添加/编辑/删除此树中的节点(无页面重新加载,所有Ajax).
目前,我可以成功地向树添加节点.我接受新节点的用户输入,如果一切都通过验证(客户端第一,服务器端第二),我的MySQL数据库中会添加一个新的"节点",然后我用一些Javascript动态更新jsTree通过向它的父节点添加一个新节点(在初始页面加载时,PHP正确地构建了一个带有无序列表和列表项的HTML树).
我的简单问题:如何使用列表项("LI")的"ID"属性向jsTree添加新节点?
作为参考,这是我的HTML树的样子.这是交给jsTree和它的HTML_DATA插件:
<ul>
<li class="plant" id="plant_3"><a href="javascript:void();">Plant Three</a>
</li>
<li class="plant" id="plant_1"><a href="javascript:void();">Plant One</a>
<ul>
<li class="area" id="area_2"><a href="javascript:void();">Area Two</a>
</li>
<li class="area" id="area_1"><a href="javascript:void();">Area One</a>
<ul>
<li class="building" id="building_1"><a href="javascript:void();">Building One</a>
<ul>
<li class="floor" id="floor_2"><a href="javascript:void();">1st Floor</a>
</li>
<li class="floor" id="floor_3"><a href="javascript:void();">2nd Floor</a>
</li>
<li class="floor" id="floor_1"><a href="javascript:void();">Ground Floor</a>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
我的点击操作键入每个节点所拥有的唯一ID("plant_1","area_3"等).目前,当我添加一个jsTree节点时,我这样做(通过CRRM插件):
$("#my_tree").jstree("create", null, false, name, {attr : "id=plant_"+id}, true);
Run Code Online (Sandbox Code Playgroud)
#my_tree初始化为:
$("#my_tree").jstree({
"ui" : {
"select_limit" : 1,
"selected_parent_close" : …
Run Code Online (Sandbox Code Playgroud) 为了便于维护和IDE类自动完成和成员提示,我在我的项目中使用了PHPDoc.鉴于此示例类:
class my_class {
public $id;
public $name;
public $number;
public function __construct() {
//Do something
}
public function Rename($name) {
$this->name = $name;
}
}
Run Code Online (Sandbox Code Playgroud)
我更愿意用类文档本身记录所有属性($id
,$name
和$number
),它们在类声明之上,然后在每个方法上面放置方法文档(如果需要).这是我最终希望我的班级看起来像:
/**
* Represents an example class for Stackoverflow
*
* @property int $id The id of the object
* @property string $name The name of the object
* @property int $number The number of the object
*/
class my_class {
public $id;
public $name;
public $number;
public …
Run Code Online (Sandbox Code Playgroud) 我有一个使用Angular $ resource提供程序来处理对API后端的所有调用的Angular 1.5应用程序。我最近添加了一个具有拖放界面的功能,一旦将某项放入特定的存储桶中,我PUT
就会向公共API方法执行对所有相关数据的请求以保存所述数据。
几个月前,我开发了它,甚至在一个特定版本中发现了Mac专用版本的Chrome中的一个奇怪错误(我们已经超过了2或3个版本),但是在其他情况下,它可以完美运行。
我最近在自己进行了一些测试之后才发布了它,但是我意识到Chrome和Opera浏览器都在PUT
调用时出错,API从未收到请求。我唯一获得的信息是Chrome控制台中的以下说明:
PUT https://www.phpdraft.com/api/draft/59/pick/5026/depth_chart/37 net::ERR_SPDY_PROTOCOL_ERROR
要亲自查看,可以在以下网址进行该调用或类似的调用:PHPDraft
我怀疑我的服务器正在使用HTTPS可能是一个问题,但是ERR_SPDY_PROTOCOL_ERROR
到目前为止,我到目前为止所做的Google搜索充其量是神秘的,听起来似乎不适合我的情况。
这是我$resource
在Angular应用程序中用来进行此PUT调用(以及所有其他调用的方式)的方式:
angular.module('app').factory('api', function($resource, ENV) {
return {
DepthChartPosition: $resource(ENV.apiEndpoint + "commish/draft/:id/depthchartposition/:position_id", {
draft_id: '@draft_id',
position_id: '@position_id',
draft_sport: '@draft_sport',
manager_id: '@manager_id',
pick_id: '@pick_id'
}, {
'update': {
method: 'PUT',
url: ENV.apiEndpoint + "draft/:draft_id/pick/:pick_id/depth_chart/:position_id"
}
})
};
});
Run Code Online (Sandbox Code Playgroud)
上面的代码生成的请求本身如下所示:
General
Request URL: https://www.phpdraft.com/api/draft/59/pick/5026/depth_chart/37
Request Headers
Accept:application/json, text/plain, */\*
Content-Type: application/json;charset=UTF-8
Origin: https://www.phpdraft.com
Referer: https://www.phpdraft.com/draft/59/depth_chart
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) …
Run Code Online (Sandbox Code Playgroud) 我正在使用Silex 2.0(我知道 - 它的开发版本尚未完全发布)以及CNAM的JWT安全提供程序(请参阅:https://github.com/cnam/security-jwt-service-provider)来编写API我正在写的一个开源应用程序.
简而言之,我关心的用户有三种类型:
ROLE_ADMIN
具有完全访问权限的全站点管理员()ROLE_COMMISH
)谁创建他们拥有的对象,并可以编辑自己的对象因此,有三个路段与这些"角色"一起:
/admin/*
管理员可以执行他们的超级行动/commish/*
委员或管理员可以对其对象执行操作/*
所有用户都可以阅读信息我遇到的问题是,虽然我可以设置3个防火墙,每个防火墙一个,但在第3个路由类别(GET /object/1
例如)中有时需要匿名访问,但是如果用户提供有效的JWT令牌,我需要访问该用户,以便对我在回复中提交的数据执行一些额外的逻辑.
正如我现在设置的那样(更多在我的配置下面),它是全有或全无:我要么将整个防火墙限制为只有具有某个角色的经过身份验证的用户,要么我将其打开给匿名用户(因此无法查看用户)信息).
是否有可能有任何人可以击中的路线,但也可以看到登录用户?
目前的安全配置:
$app['users'] = function () use ($app) {
return new UserProvider($app);
};
$app['security.jwt'] = [
'secret_key' => AUTH_KEY,
'life_time' => 86400,
'algorithm' => ['HS256'],
'options' => [
'header_name' => 'X-Access-Token'
]
];
$app['security.firewalls'] = array(
'login' => [
'pattern' => 'login|register|verify|lostPassword|resetPassword',
'anonymous' => true,
],
'admin' => array(
'pattern' => '^/admin',
'logout' …
Run Code Online (Sandbox Code Playgroud) 我有一个特定的问题,我能够用一个特定的结构,并且我不完全确定为什么.
下面是这样的情况:设计一个专门为iPad服务的网站,所以我在Windows Safari中进行了大部分开发(其他浏览器并不重要).jQTouch通常会为每个页面创建<ul>
包含<li>
项目的页面,因此我的表单包含所有这些内容.我遇到的一个特殊问题是,当我<ul>
在<form>
标签之外有一个块时,它会正确显示(如同,它会拉伸<ul>
以匹配其内容所需的任何高度).目视检查这个的简单方法是查看背景颜色<ul>
.然而,每当我把它放入一个form
标签时,它就<ul>
不能再告诉其内容的高度,并且Safari会分配它height: 0px
(在第一个例子中,它分配了一个像素数量,它是用其内容的高度来计算的,==正确)
试图在示例中仅提取重要的HTML标记和CSS样式 - 复制Safari应用于每个标记的复合CSS,以便准确显示我的应用程序在所有类中生成的内容等,并有目的地使用模糊的选择器例:
CSS:
div {
-webkit-box-flex: 1;
-webkit-box-orient: vertical;
-webkit-transform: matrix(1, 0, 0, 1, 0, 0);
-webkit-user-select: none;
background-color: #DADFE3;
background-image: -webkit-repeating-linear-gradient(left, transparent, transparent 1px, #D4DADF 1px, #D4DADF 7px);
bottom: auto;
display: -webkit-box;
font-family: 'Helvetica Neue', Helvetica;
left: 0px;
margin-bottom: 0px;
margin-left: 0px;
margin-right: 0px;
margin-top: 0px;
min-height: 100%;
overflow-x: hidden;
padding-bottom: 0px;
padding-left: 0px;
padding-right: 0px; …
Run Code Online (Sandbox Code Playgroud) jquery ×3
php ×2
angularjs ×1
asp.net-mvc ×1
c# ×1
css ×1
firefox ×1
ghostscript ×1
html ×1
javascript ×1
json ×1
jstree ×1
jwt ×1
multi-select ×1
netbeans ×1
netbeans-7 ×1
opera ×1
phpdoc ×1
safari ×1
security ×1
silex ×1
spdy ×1
symfony ×1