我很难从桌面上将一个简单的文件上传到我的远程服务器。我在php中有一个简单的表单来获取文件:
<form enctype="multipart/form-data">
<tr>
<td><label>select the file to reconcile the checks</label></td>
<td><input type="file" id="file" name="file" /></td>
<td><input type="button" id="checks" value="Check Reconciliation" /></td>
</tr>
</form>
然后将其传递给我的JavaScript:
$("#checks").live('click', function() {
$.ajax({
type: "POST",
url: "checkReconciliation3.php",
dataType: "json",
data: ({file: $('#file').val()}),
success: function(data){
$('#message').html(data.message);
}
});
}); //end of checks click function
和checkReconciliation3.php
是:
header('Content-type: text/html; charset=utf-8');
require_once ('../db.php');
require_once('ftp.php');
$file = $_POST['file'];
// set up basic connection
$conn_id = ftp_connect($ftp_server);
// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
ftp_pasv($conn_id, true);
//ftp_chdir($conn_id, '/home/bookcell/bookcellaronline.com/html/testbcos/accounting/');
ftp_put($conn_id, $remote_file, $file, FTP_BINARY);
echo $php_errormsg;
ftp_close($conn_id); // close the connection
从我在SO上研究的所有内容来看,这看起来是正确的,但我不断收到以下错误:
第24行 PHP Warning: ftp_put(checkslastmonth.csv) [<a href='function.ftp-put'>function.ftp-put</a>]: failed to open stream: No such file or directory in /chroot/home/bookcell/bookcellaronline.com/html/testbcos/accounting/checkReconciliation3.php
。
第24行
ftp_put($conn_id, $remote_file, $file, FTP_BINARY);
我尝试过使用$file = $_FILES["file"]["name"]
但我仍然遇到同样的错误。我要上传到服务器的文件位于我的桌面上。我如何让它工作?
答案 0 :(得分:1)
在任何支持File API的浏览器中都可以使用XHR2(除了IE9以外,大部分都是如此)。如果您的浏览器不支持File API,则需要在iframe中提交表单。
您可以使用预先构建的解决方案来处理这些任务,等等。我建议签出一个Fine Uploader来跨浏览器处理此任务,并提供您可能觉得有用的其他功能,例如分块,自动恢复,粘贴上传,拖放支持等。服务器端示例也提供。完全披露:我维持Fine Uploader。
答案 1 :(得分:-3)
无法通过ajax上传文件。 如果您不想刷新页面,可以通过iframe执行此操作。 http://www.ajaxf1.com/tutorial/ajax-file-upload-tutorial.html