1

ここにこのフォームがあり、ユーザーが拡張子「.pdf」のファイルをアップロードしてサーバーにアップロードできるようにします。ただし、ファイルの名前を「番号」フィールドで選択したファイル名に変更したいと考えています。どうすればそれを行うことができますか?

<form action="upload_file.php" method="post"
 enctype="multipart/form-data">
   Filename:<input type="file" name="file" id="file"><br>
   Number:<input type="text" name="number" id="number" />
   <br />
   <br />
   <input type="submit" name="submit" value="Submit">
</form>

たとえば....ユーザーはファイル「test.pdf」を選択し、「ファイル名」を番号フィールドに挿入します。次に、「file_name.pdf」を実際の「upload_file.php」スクリプトに送信したいと思います。

どんなガイダンスも役に立ちます、ありがとう

4

5 に答える 5

1

FormDataインターフェイスで POST リクエストを送信する前に、ファイル名を変更します。

var file = $('#image-file').get(0).files[0];
var newFileName = file.name + "newName";
var formData = new FormData();
formData.append('file', file, newFileName);

$.ajax({
  url: upload.php, // get the upload URL for the server
  success: function(fileData) {
    // ...
  },
  error: function(e) {
    // ...
  },
  // Form data
  data: formData,
  type: 'POST',
  cache: false,
  contentType: false,
  processData: false
});

ファイルを保存するための PHP コードは次のとおりです。

<?php
    $targetfile = $_FILES['file']['name'];
    move_uploaded_file($_FILES['file']['tmp_name'], $targetfile);
?>

注: デフォルトの POST コンテンツの長さは PHP で 8M に設定されており、php.ini で変更できます。

于 2017-10-23T08:34:54.727 に答える
0

アップロードの直前に、javascript またはクライアント側のコードを使用して名前を変更できるとは思いません。UI 要素のアップロードカスタムアップロードコントロールを独自に作成しない限り、動作はブラウザによって完全に制御されます。

ただし、サーバー側でアップロードされたファイルの名前を変更するという同じ目標を達成できます。

$destDir = '/var/www/';   //can be any directory on your server, writeable by webserver

$renamedFilename = $_POST['number']; 
//keep the same file extension if uploaded file has it
$renamedFilename .= ($pos = strrpos($_FILES['file']['name'], '.')) === false ? '' : substr($_FILES['file']['name'], $pos);

move_uploaded_file($_FILES["file"]["tmp_name"], $destDir . DIRECTORY_SEPARATOR . $renamedFilename);
于 2013-11-12T05:20:54.297 に答える