Drupal 8:无法创建文件
Drupal 8: The file could not be created
我有以下代码可以上传 API 以 base64_encode 格式提供的 excel 文件。
我想下载那个文件并保存到文件系统中。
public function import(Request $request) {
if ($request->getMethod() === 'POST') {
$data = json_decode($request->getContent(), TRUE);
$directory = 'public://import/';
// create directory if it does not exist
file_prepare_directory($directory, FILE_CREATE_DIRECTORY | FILE_MODIFY_PERMISSIONS);
$uri = $directory. $data['name'];
$files_data = preg_replace('#^data:application/\w+;base64,#i', '', $data['data']);
$file_data = base64_decode($files_data);
$file = file_save_data($file_data, $uri, FILE_EXISTS_RENAME);
echo $file->id();
}
}
尽管我已经在项目根目录下创建了 tmp
文件夹并提供了所需的 777 权限,但它转到下面的函数并给出错误。
/drupal/web/core/includes/file.inc
function file_unmanaged_save_data($data, $destination = NULL, $replace = FILE_EXISTS_RENAME) {
// Write the data to a temporary file.
$temp_name = drupal_tempnam('temporary://', 'file');
if (file_put_contents($temp_name, $data) === FALSE) {
\Drupal::messenger()->addError(t('The file could not be created.'));
return FALSE;
}
// Move the file to its final destination.
return file_unmanaged_move($temp_name, $destination, $replace);
}
我错过了什么?它不是在转换和保存文件。
已修复
在 URL 上:域。com/admin/config/media/file-system
临时目录 -> 文件夹位置和权限问题。
通常这种情况是由于错误的临时位置和权限导致的,我建议您转到 /admin/config/media/file-system
并确保正确设置 Temporary Directory
。如果没问题。检查它的权限。您需要通过网络服务将其设置为可写。
我有以下代码可以上传 API 以 base64_encode 格式提供的 excel 文件。
我想下载那个文件并保存到文件系统中。
public function import(Request $request) {
if ($request->getMethod() === 'POST') {
$data = json_decode($request->getContent(), TRUE);
$directory = 'public://import/';
// create directory if it does not exist
file_prepare_directory($directory, FILE_CREATE_DIRECTORY | FILE_MODIFY_PERMISSIONS);
$uri = $directory. $data['name'];
$files_data = preg_replace('#^data:application/\w+;base64,#i', '', $data['data']);
$file_data = base64_decode($files_data);
$file = file_save_data($file_data, $uri, FILE_EXISTS_RENAME);
echo $file->id();
}
}
尽管我已经在项目根目录下创建了 tmp
文件夹并提供了所需的 777 权限,但它转到下面的函数并给出错误。
/drupal/web/core/includes/file.inc
function file_unmanaged_save_data($data, $destination = NULL, $replace = FILE_EXISTS_RENAME) {
// Write the data to a temporary file.
$temp_name = drupal_tempnam('temporary://', 'file');
if (file_put_contents($temp_name, $data) === FALSE) {
\Drupal::messenger()->addError(t('The file could not be created.'));
return FALSE;
}
// Move the file to its final destination.
return file_unmanaged_move($temp_name, $destination, $replace);
}
我错过了什么?它不是在转换和保存文件。
已修复
在 URL 上:域。com/admin/config/media/file-system
临时目录 -> 文件夹位置和权限问题。
通常这种情况是由于错误的临时位置和权限导致的,我建议您转到 /admin/config/media/file-system
并确保正确设置 Temporary Directory
。如果没问题。检查它的权限。您需要通过网络服务将其设置为可写。