gpt4 book ai didi

php - ajax多次上传php文件处理

转载 作者:行者123 更新时间:2023-12-01 02:22:26 25 4
gpt4 key购买 nike

嗨,我正在使用 fineupload multi file uploading script ,但有些东西我无法掌握。我正在尝试制作一个 php 服务器端文件处理脚本。

当你包含时

<script type="text/javascript">
$(document).ready(function() {
var uploader = new qq.FileUploader({
element: $('#manualUploadModeExample')[0],
action: "core/up.php",
autoUpload: false,
demoMode: false,
debug: false,
multiple: true,
maxConnections: 3,
disableCancelForFormUploads: false,
//0 is geen limit getal in bytes
minSizeLimit: 0,
sizeLimit: 0,
inputName: "qqfile",
uploadButtonText: "Select Files",
cancelButtonText: "verwijder",
failUploadText: "Upload mislukt"
});

$('#triggerUpload').click(function() {
uploader.uploadStoredFiles();
});
});

显示它的 html 是

    <div id="Upload">
<noscript>
<p>Please enable JavaScript to use file uploader.</p>
<!-- or put a simple form for upload here -->
</noscript>
<ul id="manualUploadModeExample" class="unstyled"></ul>
<span id="triggerUpload" class="btn btn-primary">Upload Queued Files</span>
</div>

现在在 up.php 中,我想做文件验证之类的事情,但我无法获取文件信息

代码

<?php
if(isset($_FILES["qqfile"])){
echo json_encode(array('error' => "There is a file to work with"));
}
else
{
echo json_encode(array('error' => "there is no file set"));
}
?>

给出错误,没有文件设置为上传表单上的错误。所以它确实收到了来自 php 文件的错误...但是它发送了什么?我怎样才能找到它

当我发回成功消息时

echo json_encode(array('success' => TRUE));

上传表单显示文件已上传并变成绿色..

最佳答案

我不知道你是否已经找到了解决方案,但也许你可以看看这个:

第一个 html 表单

只需构建一个普通的 html 表单,没有提交按钮,而只有一个按钮按钮。 请注意,我的解决方案还有一个精美的加载栏!

<form enctype="multipart/form-data" id="myform">    
<input type="text" name="some_usual_form_data" />
<br>
<input type="text" name="some_other_usual_form_data" />
<br>
<input type="file" multiple name="file[]" id="image" /> <sub>note that you have to use [] behind the name or php wil only see one file</sub>
<br>
<input type="button" value="Upload files" class="upload" />
</form>
<progress value="0" max="100"></progress>
<hr>
<div id="content_here_please"></div>

现在您可以添加 accept="image/*"something in that fashion仅选择您需要或想要的文件类型。

然后使用jquery/javascript上传

看起来像你的,但更好。

$(document).ready(function () { 
$('body').on('click', '.upload', function(){
// Get the form data. This serializes the entire form. pritty easy huh!
var form = new FormData($('#myform')[0]);

// Make the ajax call
$.ajax({
url: 'action.php',
type: 'POST',
xhr: function() {
var myXhr = $.ajaxSettings.xhr();
if(myXhr.upload){
myXhr.upload.addEventListener('progress',progress, false);
}
return myXhr;
},
//add beforesend handler to validate or something
//beforeSend: functionname,
success: function (res) {
$('#content_here_please').html(res);
},
//add error handler for when a error occurs if you want!
//error: errorfunction,
data: form,
// this is the important stuf you need to overide the usual post behavior
cache: false,
contentType: false,
processData: false
});
});
});

// Yes outside of the .ready space becouse this is a function not an event listner!
function progress(e){
if(e.lengthComputable){
//this makes a nice fancy progress bar
$('progress').attr({value:e.loaded,max:e.total});
}
}

相信我,我一直这么轻松。不过,如果您想要整个表单,您也可以在此处创建一个 javascript 函数来验证文件。只需将验证函数名称放在 beforeSend: youvalfunctname 后面,您也可以在其中创建一个回调,例如 beforeSend: function(){//do stuf here }。当上传确实发生错误时,您可以使用 error: 执行相同的操作。

服务器端 php.ini最后

您可以在这里采取您想要的方式,但我只是给出一个示例,您可以如何做到这一点。

<?php

$succeed = 0;
$error = 0;
$thegoodstuf = '';
foreach($_FILES["file"]["error"] as $key => $value) {
if ($value == UPLOAD_ERR_OK){
$succeed++;

//took this from: "https://stackoverflow.com/questions/7563658/php-check-file-extension"
//you can loop through different file types
$file_parts = pathinfo($filename);
switch($file_parts['extension'])
{
case "jpg":

//do something with jpg

break;

case "exe":

// do sometinhg with exe

break;

case "": // Handle file extension for files ending in '.'
case NULL: // Handle no file extension
break;
}

$name = $_FILES['file']['name'][$key];

// replace file to where you want
copy($_FILES['file']['tmp_name'][$key], './upload/'.$name);

$size = filesize($_FILES['file']['tmp_name'][$key]);
// make some nice html to send back
$thegoodstuf .= "
<br>
<hr>
<br>

<h2>File $succeed - $name</h2>
<br>
give some specs:
<br>
size: $size bytes
";
}
else{
$error++;
}
}

echo 'Good lord vader '.$succeed.' files where uploaded with success!<br>';

if($error){
echo 'shameful display! '.$error.' files where not properly uploaded!<br>';
}

echo '<br>O jeah there was a field containing some usual form data: '. $_REQUEST['some_usual_form_data'];
echo '<br>O jeah there was a field containing some usual form data: '. $_REQUEST['some_other_usual_form_data'];

echo $thegoodstuf;

?>

您还可以看一下专门为上传图片而制作的演示:Note not always online

这里还有 the demo 的代码示例

关于php - ajax多次上传php文件处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12445784/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com