我真的想换掉jquery-file-upload的现有文件上传结构,但我似乎无法找到任何使用数据库而不是文件系统进行存储的文档。jquery-file-upload脚本是否可以使用数据库?
有谁知道这是否可能,如果是的话,我可以在哪里找到一些文档或例子?
我真的想换掉jquery-file-upload的现有文件上传结构,但我似乎无法找到任何使用数据库而不是文件系统进行存储的文档。jquery-file-upload脚本是否可以使用数据库?
有谁知道这是否可能,如果是的话,我可以在哪里找到一些文档或例子?
您使用的是哪个平台?
PHP? 。净?红宝石?
不知道的细节,让我们看看JQuery的PHP例一般,看看是在
https://github.com/blueimp/jQuery-File-Upload/blob/master/php/index.php
您在文件中看到要
$upload_handler = new UploadHandler();
header('Pragma: no-cache');
header('Cache-Control: private, no-cache');
header('Content-Disposition: inline; filename="files.json"');
header('X-Content-Type-Options: nosniff');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: OPTIONS, HEAD, GET, POST, PUT, DELETE');
header('Access-Control-Allow-Headers: X-File-Name, X-File-Type, X-File-Size');
switch ($_SERVER['REQUEST_METHOD']) {
case 'OPTIONS':
break;
case 'HEAD':
case 'GET':
$upload_handler->get();
break;
case 'POST':
$upload_handler->post();
break;
case 'DELETE':
$upload_handler->delete();
break;
default:
header('HTTP/1.1 405 Method Not Allowed');
}
看情况“POST”
它包含以下内容
$upload_handler->post();
所以如果一个文件被发布,让我们看看后例程[这只是为了处理RESTFul风格的东西,它看起来......正确的动词做适当的事情,GET获取文件,删除删除的文件,POST帖子文件]
因此,让我们看看那些未来相关位现在
public function post() {
if (isset($_REQUEST['_method']) && $_REQUEST['_method'] === 'DELETE') {
return $this->delete();
}
$upload = isset($_FILES[$this->options['param_name']]) ?
$_FILES[$this->options['param_name']] : null;
$info = array();
if ($upload && is_array($upload['tmp_name'])) {
foreach ($upload['tmp_name'] as $index => $value) {
$info[] = $this->handle_file_upload(
$upload['tmp_name'][$index],
isset($_SERVER['HTTP_X_FILE_NAME']) ?
$_SERVER['HTTP_X_FILE_NAME'] : $upload['name'][$index],
isset($_SERVER['HTTP_X_FILE_SIZE']) ?
$_SERVER['HTTP_X_FILE_SIZE'] : $upload['size'][$index],
isset($_SERVER['HTTP_X_FILE_TYPE']) ?
$_SERVER['HTTP_X_FILE_TYPE'] : $upload['type'][$index],
$upload['error'][$index]
);
}
} elseif ($upload || isset($_SERVER['HTTP_X_FILE_NAME'])) {
$info[] = $this->handle_file_upload(
isset($upload['tmp_name']) ? $upload['tmp_name'] : null,
isset($_SERVER['HTTP_X_FILE_NAME']) ?
$_SERVER['HTTP_X_FILE_NAME'] : (isset($upload['name']) ?
isset($upload['name']) : null),
isset($_SERVER['HTTP_X_FILE_SIZE']) ?
$_SERVER['HTTP_X_FILE_SIZE'] : (isset($upload['size']) ?
isset($upload['size']) : null),
isset($_SERVER['HTTP_X_FILE_TYPE']) ?
$_SERVER['HTTP_X_FILE_TYPE'] : (isset($upload['type']) ?
isset($upload['type']) : null),
isset($upload['error']) ? $upload['error'] : null
);
}
的最终重要组成部分,为你在这里是
$this->handle_file_upload(
$upload['tmp_name'][$index],
isset($_SERVER['HTTP_X_FILE_NAME']) ?
$_SERVER['HTTP_X_FILE_NAME'] : $upload['name'][$index],
isset($_SERVER['HTTP_X_FILE_SIZE']) ?
$_SERVER['HTTP_X_FILE_SIZE'] : $upload['size'][$index],
isset($_SERVER['HTTP_X_FILE_TYPE']) ?
$_SERVER['HTTP_X_FILE_TYPE'] : $upload['type'][$index],
$upload['error'][$index]
);
它调用handle_file_upload。现在注意所有这些如何工作。 该文件已上传,它确定动词是什么,获取,发布,删除。它不关心是否有数据库,它只关心接下来要做什么。它的数字打电话 发布然后数字嘿我需要调用handle_file_upload。现在handle_file_upload在某种意义上对你来说是一个黑盒子,你可以用另一个用一些数据库逻辑来处理它。
如果你看一下功能handle_file_upload你会看到
私有函数handle_file_upload($ uploaded_file,$名称,$大小,$型,$错误){
所以把这些参数,并使用它们进行数据库查询并以这种方式保存文件。基本上只是重写handle_file_upload
无论如何希望这有助于。
用于存储文件的服务器端部分独立于jQuery文件上载项目。这里是使用PHP将上传的文件存储在MySQL数据库中的一个很好的例子;
http://www.php-mysql-tutorial.com/wikis/mysql-tutorials/uploading-files-to-mysql-database.aspx
davidethell:这听起来像我可以插入我现有的代码上传图像到我的数据库作为handle_file_upload方法的一部分正确吗? – Paul 2012-01-03 02:20:15
我正在使用PHP方法,所以它听起来像我用当前的DB解决方案替换该方法(handle_file_upload)。 – Paul 2012-01-03 11:28:00
嗨保罗, 这是完全正确的。您可以直接插入现有解决方案。 这只是一系列连续的步骤,不关心和简单地相信下一步工作。因此,当您将现有的数据库解决方案替换为handle_file_upload时,程序的其余部分将不会在意,它只会起作用。假设你编码正确:> – Jordan 2012-01-03 15:39:00
非常好,谢谢你的帮助:) – Paul 2012-01-03 15:48:14