【发布时间】:2013-04-22 10:30:53
【问题描述】:
简介
我试图在一个可能很复杂的环境中实现一些相对简单的事情。我想使用 plupload jQuery UI plugin 将文件从 JavaScript 小部件 (Netvibes UWA format) 上传到本地 Intranet 服务器。
问题
我的代码设置似乎正确 - plupload 容器出现,我可以愉快地选择和上传文件。上传似乎工作 - 每个文件都达到 100% - 但是当我检查我的 Firebug 控制台时,我收到以下错误:
OPTIONS upload.php - 403 Forbidden
并且文件没有上传到我指定的files 目录。
环境
- 源服务器是
frogserver.curriculum.local,内部IP 192.168.3.15 - 收件人服务器是
staff.curriculum.local,内部 IP 为 192.168.3.60 - 源服务器是 linux,但我无法直接访问 HTML/JS/PHP/SQL,一切都必须通过上述 Netvibes Universal Widget API 完成。这是 www.frogtrade.com 提供的封闭式虚拟学习环境解决方案
- 接收服务器是 Windows/IIS
代码
JavaScript
widget.onLoad = function(){
$( "#datetime" ).datepicker({ dateFormat: "yy-mm-dd" });
Input.init();
/* plupload */
$("#uploader").plupload({
// General settings
runtimes : 'html5,flash,html4',
url : 'http://staff.curriculum.local/frog/LOTS/upload.php',
max_file_size : '1000mb',
max_file_count: 20, // user can add no more then 20 files at a time
chunk_size : '1mb',
rename: true,
multiple_queues : true,
// Resize images on clientside if we can
resize : {width : 320, height : 240, quality : 90},
// Rename files by clicking on their titles
rename: true,
// Sort files
sortable: true,
// Specify what files to browse for
filters : [
{title : "Image files", extensions : "jpg,gif,png"},
{title : "Zip files", extensions : "zip,avi"}
],
// Flash settings
flash_swf_url : '/user/74/186718.swf'
});
// Client side form validation
$('form').submit(function(e) {
var uploader = $('#uploader').plupload('getUploader');
// Files in queue upload them first
if (uploader.files.length > 0) {
// When all files are uploaded submit form
uploader.bind('StateChanged', function() {
if (uploader.files.length === (uploader.total.uploaded + uploader.total.failed)) {
$('form')[0].submit();
}
});
uploader.start();
} else
alert('You must at least upload one file.');
return false;
});
}
HTML
<form method="post" action="../dump.php">
<div id="uploader">
<p>Your browser doesn't have Flash, Silverlight, Gears, BrowserPlus or HTML5 support.</p>
</div>
</form>
PHP
我使用的 PHP 脚本是捆绑的 upload.php 文件处理脚本,在顶部添加了以下代码:
// * - stands for all domains
header("Access-Control-Allow-Origin: *");
我也更改了上传目录目标:
// Settings
//$targetDir = ini_get("upload_tmp_dir") . DIRECTORY_SEPARATOR . "plupload";
$targetDir = 'files';
想法
- 我不确定这是否属于“跨域”文件传输?我尝试将其设置为原样,因此我的 PHP 脚本中的
Access-Control-Allow-Origin标头 - Netvibes UWA 和 VLE 设置可能会以某种方式阻碍
- Internet 访客帐户的 LOTS 文件夹上的 IIS 权限似乎是正确的(即“读取”权限),但我不完全确定;它在“特殊权限”上有“拒绝”,我似乎看不到这些权限是什么,或者改变它
编辑:IIS 权限
刚刚检查过,一切似乎都是正确的:
【问题讨论】:
-
纯粹为您在帖子中付出的努力而投票,真心希望您能尽快解决这个问题。
-
您是否尝试设置完整的 777 权限只是为了查看权限是否起作用?
-
谢谢决斗。我刚刚仔细检查过,IIS 来宾帐户只有
WRITE访问被拒绝。我认为这不是问题所在 - Firebug 似乎报告READ对我的upload.php脚本的访问被拒绝。 -
我添加了来自 IIS 的权限截图。
-
混蛋,至少那排除了权限!
标签: php javascript jquery iis plupload