Geoprocessing service to return a file

1114
8
Jump to solution
07-21-2020 01:50 AM
VictorTey
Esri Contributor

Hi,

How can I get a geoprocessing service to return a file?

I published a GP

if __name__ == '__main__':

    file = open(arcpy.env.scratchWorkspace+ "/" + "test.txt","w")
    file.write("why")
    file.close()
    arcpy.SetParameter(0, file.name)‍‍‍‍‍‍‍‍‍‍‍‍

':

however i kept receiving the 

 "value": "d:\\arcgisserver\\directories\\arcgisjobs\\script_gpserver\\j94a7e5b06f3342deb0ebcb65467f63fe\\scratch/test.txt"

I can see the file in the scratch folder but i need to return the file some how.

I did try to access the file via different permutation of 

https://example.com/arcgis/rest/services/Script/GPServer/Script/jobs/j94a7e5b06f3342deb0ebcb65467f63... to no avail

Can someone kindly assist.

Tags (2)
0 Kudos
1 Solution

Accepted Solutions
BruceHarold
Esri Regular Contributor

Victor, the team here notice your output data type is GPString, please change it to GPFile. it should then work.

View solution in original post

0 Kudos
8 Replies
Egge-JanPollé1
MVP Regular Contributor

Hi Victor Tey,

Why do you put a forward slash between the path and the file?

What happens if you replace this "/" with "\\"?

Does this solve your issue?

BR,

Egge-Jan

VictorTey
Esri Contributor

I had rewritten the code several times

txtFile = os.path.join(arcpy.env.scratchFolder, "myTxt.txt")
f = open(txtFile, 'w')
f.writelines("huh")
f.close
arcpy.SetParameterAsText(0, txtFile)

One of them is as shown above, still the same .

I have arcgis enterprise installed locally, would that have made a difference?

0 Kudos
DanPatterson
MVP Esteemed Contributor
j94a7e5b06f3342deb0ebcb65467f63fe

This number differs from the one in the your image... is that supposed to happen?


... sort of retired...
VictorTey
Esri Contributor

My apologies, I had so many tabs opened and I must have copy and paste from the wrong tab

txtFile = os.path.join(arcpy.env.scratchFolder, "myTxt.txt")
    f = open(txtFile, 'w')
    f.writelines("huh")
    f.close
    arcpy.SetParameterAsText(0, txtFile)‍‍‍‍‍
0 Kudos
BruceHarold
Esri Regular Contributor

Victor, the team here notice your output data type is GPString, please change it to GPFile. it should then work.

0 Kudos
VictorTey
Esri Contributor

Spot on, thank you so much , this is my first attempt working with publishing GP and trying to piece together how everything works together

BruceHarold
Esri Regular Contributor

Superseded by my comment above but still useful!  To answer your original question, to return your output file parameter (in Pro) wrap the web tool in a model and add the Copy geoprocessing tool to copy it into your project.  The file has to be a supported type.  Here is an example where the web tool is a Spatial ETL tool which I featured in my recent UC technical workshop on Data Interoperability extension.  The experience of a web tool output going to a rather obscure profile directory is under review by geoprocessing team.  Note:  The intermediate scratchfile will be deleted when you exit Pro, this is also under review.

VictorTey
Esri Contributor

Thank you all for your help. It turns out I have been really silly.

I kept attempting to access the file via  "arcgis/rest/services/

arcgis/rest/services/Script5/GPServer/Script/jobs/j24670b8fb4944b60993fa840472bc2f8/results/URL

where else the output of the directory is actually on arcgis/rest/directories/arcgisjobs

arcgis/rest/directories/arcgisjobs/script5_gpserver/j05515f60833c4e15a8d461f40acb1484

0 Kudos