使用angularjs将图像传递到后端



我很难理解如何使用angularjs将图像上传到我的服务器(现在是我的本地主机(。

在我的前端,我使用了一个带有角度指令的模型形式:

main.php
<form>
<div class="form-group">
<label for="myFileField">Select a file: </label>
<input type="file" file-model="MenuItem.myFile"  class="form-control" id ="myFileField"/>
</div>
<button ng-click="uploadFile()" class = "btn btn-primary">Upload File</button>
</form> 

然后指令:

app.js
app.directive('fileModel', ['$parse', function ($parse) {
return {
restrict: 'A',
link: function(scope, element, attrs) {
var model = $parse(attrs.fileModel);
var modelSetter = model.assign;
element.bind('change', function(){
scope.$apply(function(){
modelSetter(scope, element[0].files[0]);
});
});
}
};
}]);

在我的JS中,我从我的作用域中获取文件。

$scope.uploadFile = function() {
var file = $scope.MenuItem.myFile;
console.log(file);
console.log($scope.MenuItem);s
qData = {
file_name: file['name'],
file_type: file['type'],
file_size: file['size'],
}
console.log(qData);
qF(qData, 'uploadImage');
};

为了解释上面的代码,我只是试图打印出上面的信息并将其发送到我的后端文件。";qF";函数获取qData中的所有变量,并通过post将它们传递给我指定的任何php文件。

问题是,我为后端找到的所有解决方案都涉及";tmp_name;变量,但是";文件";我传递到php中的对象没有";tmp_name";。当我安慰注销";文件";变量,这是输出:

FILE:
lastModified: 1601663109351  
lastModifiedDate: Fri Oct 02 2020 13:25:09 GMT-0500 (Central Daylight Time) {}
name: "SmallDoc.txt"
size: 0
type: "text/plain"
webkitRelativePath: ""
__proto__: File

我也不知道webkitRelativePath是什么。如果我能得到tmp_name,我就知道在后台该做什么。有没有一种方法可以在没有这个变量的情况下使用php文件将文件上传到硬编码的位置,如果没有,我该如何获得它。

示例中的php.ini:

> ;;;;;;;;;;;;;;;; ; File Uploads ; ;;;;;;;;;;;;;;;;
> 
> ; Whether to allow HTTP file uploads. ; http://php.net/file-uploads
> file_uploads=On
> 
> ; Temporary directory for HTTP uploaded files (will use system default
> if not ; specified). ; http://php.net/upload-tmp-dir
> upload_tmp_dir="C:xampptmp"
> 
> ; Maximum allowed size for uploaded files. ;
> http://php.net/upload-max-filesize upload_max_filesize=2000M
> 
> ; Maximum number of files that can be uploaded via a single request
> max_file_uploads=20

为了清楚起见,我遇到的问题是,我基本上不确定如何完成从上传表单中获取图像的操作,直到将其存储在我的服务器/本地主机上。我基本上被卡住了,无法将其移动到JS上。

当您将文件上传到启用php的web服务器时,它会将文件临时存储在您在php.ini中指定的路径upload_tmp_dir中。在脚本执行过程中,您可以将此文件移动或复制到您想要的位置(如项目文件夹(。执行结束后,文件会自动从temp_dir中删除。

您可以通过$_FILES["file"]["tmp_name"]获得此路径,然后可以使用move_uploaded_file等函数来移动此文件或复制此文件到您的项目目录。

最新更新