【问题标题】:dropzone with cakephp 2.5带有 cakephp 2.5 的 dropzone
【发布时间】:2014-09-01 23:04:32
【问题描述】:

我的问题是我想将 dropzone 与 cakephp 2.5 集成;但在表单提交后 $this->request->data['pic'] 返回空数组。但是当我添加图像时在放置区;它显示成功图像。第二;文件未移动到目标路径“APP.'webroot'.DS.'uploadedpics'.DS

请检查我下面的代码。

我在默认布局中包含了 dropzone css 和 js 文件

echo $this->Html->css('dropzone/basic');
echo $this->Html->css('dropzone/dropzone'); 

echo $this->Html->script('js/dropzone/dropzone');
echo $this->Html->script('js/dropzone/dropzone.min');
echo $this->Html->script('js/dropzone/dropzone-amd-module');
echo $this->Html->script('js/dropzone/dropzone-amd-module.min');

我的 HTML 页面有表单和 dropzone js:-

<form method="post" action="/domain/controller/addpics" class="dropzone" id="mydropzone" enctype='multipart/form-data'> 
<div id="dropzonePreview"></div> <!--// this will the dropzone drag and drop section .notice we have given it an id dropzonePreview .-->
<input type="button" id="sbmtbtn" value="submit"/>
</form>

<script>
Dropzone.options.mydropzone = {
// url does not has to be written if we have wrote action in the form tag but i have mentioned here just for convenience sake 
url: '/domain/controller/addpics', 
addRemoveLinks: true,
autoProcessQueue: false, // this is important as you dont want form to be submitted unless you have clicked the submit button
autoDiscover: false,
paramName: 'pic', // this is optional Like this one will get accessed in php by writing $_FILE['pic'] // if you dont specify it then bydefault it taked 'file' as paramName eg: $_FILE['file'] 
previewsContainer: '#dropzonePreview', // we specify on which div id we must show the files
clickable: false, // this tells that the dropzone will not be clickable . we have to do it because v dont want the whole form to be clickable 
accept: function(file, done) {
console.log("uploaded");
done();
},
error: function(file, msg){
alert(msg);
},
init: function() {

var myDropzone = this;
//now we will submit the form when the button is clicked
$("#sbmtbtn").on('click',function(e) {
e.preventDefault();
myDropzone.processQueue(); // this will submit your form to the specified action path
// after this, your whole form will get submitted with all the inputs + your files and the php code will remain as usual 
//REMEMBER you DON'T have to call ajax or anything by yourself, dropzone will take care of that
});

} // init end

};
</script>

控制器代码:-

function addpics() {
  $tempFile = $this->request->data['pic']['tmp_name'];          
  $targetPath = APP.'webroot'.DS.'uploadedpics'.DS;
  $targetFile =  $targetPath. $this->request->data['pic']['name'];
  move_uploaded_file($tempFile,$targetFile);
}

问候

【问题讨论】:

  • 你能说这对你有用吗?下面的答案...
  • @CFeo:我想自己尝试代码并没有什么坏处……以你最慢的速度应该不会花 5 分钟……

标签: cakephp dropzone.js


【解决方案1】:


当您使用 dropzone 并将表单提交到服务器时,
在 Controller 中,您可以通过使用源获取文件信息,如下所示

$file = $this->params->form['file'];

祝你好运

【讨论】:

    【解决方案2】:
    APP . DS . 'webroot'.DS.'uploadedpics'.DS
          ^--Directory Separator might be needet.
    

    【讨论】:

    • 虽然此代码可能有助于解决问题,但提供有关 why 和/或 如何 回答问题的附加上下文将显着改善长期价值。请edit你的答案添加一些解释。
    猜你喜欢
    • 1970-01-01
    • 2018-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-08
    • 2023-03-28
    • 2015-08-30
    相关资源
    最近更新 更多