Hi @chrismilleratx … oh boy… I think you misunderstand something about arrays in general and Bubble datatypes in particular.
First, what is a file in Bubble? A file in Bubble is represented by a string that represents where the file is located (the file’s URL). There is an object some_file whose location (URL) we know as some_file's URL.
For example (these are images and not files, but they are the same thing), here are some Sinatra’s that have an image on them (buried several levels down). The image’s URL are shown in this repeating group (highlighted):
Original Sinatra’s image is located at //s3.amazonaws.com/appforest/... etc. For reasons that don’t make much sense, Bubble omits the protocol, but Bubble will be Bubble. The fully-qualified URL to this image is https://s3.amazonaws.com/appforest/... etc. Now, please note, I can’t “change” that URL. It’s not writeable. It simply tells me where that image lives.
Second, can you “move” the file or image to some new URL by changing that string? No. That’s not a writeable property. The file is found where the file might be found.
If you were (and I’m not saying this is impossible) to be able to move a file to some different location, well, that would not be the same file. It would be a different file object, in vanilla Bubble.
Now, in your example (an array of strings, known in Bubble as a List of “texts”), we have three strings (["Apple", "Banana", "Pear"]). We can change these things because a text is mutable. If I do this, I’m not “changing its name”, I’m literally replacing it with a new string. This is what the Change RAM List action does – it changes (ex-changes or replaces some List item with another).
So, let’s say that Floppy’s RAM List is of type text and contains Apple, Banana, and Pear and I want to change the string “Banana” to “Keith”. Well, I can use the Change RAM List to either (1) change the item at index 2 (“Banana”) to the new string (“Keith”) using “Change by Index” or (2) find (all, first, last) instances of “Banana” and change them to “Keith” by changing the items “by value”. (That is, find all instances of Banana and change them to Keith, or change the first instance of Banana to Keith, or change the last instance of Banana to Keith), depending upon the Action’s settings.
Now, if my list is of a complex type, like a Thing or a file or an image or a date range or a numeric range or an Option, or an API response object, etc. my options are exactly the same: Replace (change) the item at some index by some other item of the same type, OR replace (all, first, last) item with some item of the same type.
For example, let’s say our list is a list of Favorite Things (a custom data type from my app), well, I can (1) take the Favorite Thing at some index and replace it with a different Favorite Thing, OR I can search for a given Favorite Thing and replace it with some other Favorite Thing “by value”, meaning that we scan the list for all occurrences of the Favorite Thing in question (the Thing we want to change), and then replace the first, all, or last instances of that Thing with the replacement value.
By doing this, we are not executing “Make Changes to a Thing”, we are just taking one Thing and changing it to another Thing.
Same would go for file objects: Replace the file located at “blah blah blah” with the file located at “yah yah yah”.
If I understand your question correctly (as @mikeloc would say). You can’t just change the URL of a file object. We can of course, substitute one file for another (using Change RAM List), but we can’t actually move a file by simply changing its URL field.
Now, it’s possible (though unlikely) that your file uploader element allows you to change filenames. However, in this case, you’d be holding a list of strings (texts) in Floppy’s RAM List and, if you changed one of these strings (using Change RAM List) you would then need to execute another step, which is: Tell your file uploader element that the user desires to change the filename previously known as [old_string_value] to [new_string_value].
And, if this were something possible (again, I don’t know that it is or isn’t in your case), we’d probably do it like: (1) tell the uploader thingy that old_string_value has changed to new_string_value and then (2) execute “Change RAM List Value(s)” to reflect that change in the Floppy’s RAM List (change the string old_string_value to the new string new_string_value].
This is a very long way of saying, none of this is magic. (Well, it is sort of magic compared to stupid vanilla Bubble where we can’t say, “take the value at the fifth index and change it to some new value” or “change all instances of ‘banana’ to ‘keith’”.) All we are we are doing is replacing some known value by some other known value. The replacement of the value doesn’t change the underlying item at the old location(s). We are simply saying, “change item_x to item_y”. Replacing item_x with item_y does not cause any fundamental change to item_x or item_y. It merely replaces them the one with the other.
I hope this makes sense.